JVM이 이미로드 (실행) 된 후 VM 매개 변수를 변경/수정/추가 할 수 있습니까? 그렇다면 어떻게 할 수 있습니까?런타임시 JVM 매개 변수 설정
18
A
답변
34
명령 줄에서 -D
플래그를 통해 설정하려는 속성의 경우 System.setProperty이 필요합니다. 예를 들면 :
System.setProperty("propname", "hello world");
// ... later ...
String value = System.getProperty("propname");
업데이트 :
당신은 동적 디버깅을 활성화 할 수 없습니다,하지만 당신은 시작할 때 디버깅을 사용하지만 나중에 디버거를 첨부 할 수 있습니다. 다음을 사용하면 12345 포트에서 수신 대기하고 즉시 실행중인 프로그램을 시작할 수 있습니다 (suspend=n
통해). 당신이 디버거를 분리해야하는 경우 등, 나중에 다시 물론
-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=12345
를 첨부/경우 디버거를 연결할 수 있습니다, 이것은 단지 잘 작동하도록 디버거가 연결되지 않은 경우에도 성능 아파 dev/테스트 코드, 생산이 아닙니다. 이를 위해 로깅을 원합니다. log4j.
3
간단히 대답하면 런타임에 VM 매개 변수를 변경할 수 없다는 것입니다. Runtime 클래스는 최대 메모리와 같은 몇 가지 옵션을 노출합니다. max memory와 같은 주요 매개 변수는 관리자 유형에 의해서만 설정되어야하며 여러 JVM이 한 시스템에 존재할 때 자원을 관리 할 수 있습니다. 하나의 JVM이 욕심을 갖도록 허용하고 할당 된 것보다 더 많은 것을 요청하면이 제약 조건을 없앨 수 있습니다.
-X 비표준 옵션은 무엇입니까? 특히 -Xdebug와 다른 디버깅 플래그? – Guy
디버깅 정보가 포함 된 업데이트를 추가했습니다. –
해롤드 감사합니다! – Guy