lein help trampoline
stati:
eseguire un compito senza nidificazione JVM del progetto all'interno di Leiningen.
Calcola il codice Clojure per eseguire nel processo del progetto per la determinato compito e permette proprio processo JVM di Leiningen per uscire prima di esecuzione, piuttosto che lanciare un sottoprocesso di JVM di Leiningen.
Da utilizzare per risparmiare memoria o per aggirare i problemi di stdin.
Argomenti: ([task-name & args])
Così si può vedere, senza trampoline
la seconda JVM corre come un sotto-processo del primo. Ecco perché il primo non può uscire: l'uscita interromperebbe il secondo.
D'altra parte, con trampoline
il primo JVM costruisce uno script di shell che viene quindi eseguito dallo script per generare la seconda JVM. Quindi, in questo caso, la seconda JVM è figlia dello script lein
. How Clojure Babies are Made: Leiningen's Trampoline copre questo aspetto in modo abbastanza dettagliato.
Per quanto riguarda il motivo per cui trampoline
non è l'impostazione predefinita, non sono del tutto sicuro. Ma ricorda che non tutti i comandieseguono il codice del progetto, quindi la seconda JVM non è necessaria per ogni comando.
Inoltre, potrebbero esserci degli svantaggi nell'uso di trampoline
. Ad esempio, date un'occhiata alle seguenti righe di codice dal suddetto articolo:
# Just don't change :target-path in project.clj, mkay?
TRAMPOLINE_FILE="target/trampolines/$INPUT_CHECKSUM"
Per me, questo implica che ci potrebbero essere problemi se :target-path
è set in project.clj
.
fonte
2014-12-20 18:26:00
separazione spazio dei nomi? http://www.flyingmachinestudios.com/programming/lein-trampoline/ – nha
Ciò interromperà l'albero del processo, impedendo la pulizia dei processi quando accade qualcosa al processo padre che ha avviato lein. – NielsK
È perfettamente chiaro perché 'lein' avvia una JVM separata, ci sono molte ragioni per farlo. Dal perché mantenere la JVM originale in esecuzione per tutto il tempo? –