lein help trampoline
상태 :
이 Leiningen의 내부 프로젝트의 JVM을 중첩하지 않고 작업을 실행합니다.
는 주어진 작업을위한 프로젝트의 프로세스에서 실행하는 Clojure의 코드를 계산하고 Leiningen 자신의 JVM 프로세스를 실행하기보다는 Leiningen의 JVM의 서브 프로세스를 시작 전에 종료 할 수 있습니다.
메모리를 절약하거나 표준적인 문제를 해결하려면이 옵션을 사용하십시오.
인수 : ([작업 이름 & 인수는]) trampoline
없이
그래서 당신이 볼 수있는, 두 번째 JVM은 최초의 서브 프로세스로 실행됩니다. 이것이 첫 번째가 나갈 수없는 이유입니다.
한편, trampoline
으로 첫 번째 JVM은 보조 스크립트를 구성하여 lein
스크립트에 의해 실행되어 두 번째 JVM을 생성합니다. 따라서이 경우 두 번째 JVM은 lein
스크립트의 하위 항목입니다. How Clojure Babies are Made: Leiningen's Trampoline은 이것을 아주 자세히 설명합니다.
왜 trampoline
이 기본값이 아닌지에 대해서는 확실하지 않습니다. 그러나 모든 lein
명령이 프로젝트 코드를 실행하는 것은 아니므로 모든 명령에 두 번째 JVM이 필요하지 않음을 기억하십시오.
또한 trampoline
을 사용하면 단점이있을 수 있습니다. 예를 들어, 위의 문서에서 다음 코드 줄에서 살펴 : 나에게
# Just don't change :target-path in project.clj, mkay?
TRAMPOLINE_FILE="target/trampolines/$INPUT_CHECKSUM"
, 즉 :target-path
가 project.clj
에 세트 인 경우 문제가있을 수 있음을 의미한다.
네임 스페이스 분리? http://www.flyingmachinestudios.com/programming/lein-trampoline/ – nha
프로세스 트리가 깨져서, 린 프로세스를 시작한 부모 프로세스에 문제가 발생했을 때 프로세스가 정리되는 것을 방지 할 수 있습니다. – NielsK
lein이 별도의 JVM을 시작하는 이유는 분명합니다. 그렇게해야 할 이유가 많이 있습니다. 전체 JVM을 계속 실행하는 이유는 무엇입니까? –