2009-11-18 3 views

답변

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.

+0

-X 비표준 옵션은 무엇입니까? 특히 -Xdebug와 다른 디버깅 플래그? – Guy

+0

디버깅 정보가 포함 된 업데이트를 추가했습니다. –

+0

해롤드 감사합니다! – Guy

3

간단히 대답하면 런타임에 VM 매개 변수를 변경할 수 없다는 것입니다. Runtime 클래스는 최대 메모리와 같은 몇 가지 옵션을 노출합니다. max memory와 같은 주요 매개 변수는 관리자 유형에 의해서만 설정되어야하며 여러 JVM이 한 시스템에 존재할 때 자원을 관리 할 수 ​​있습니다. 하나의 JVM이 욕심을 갖도록 허용하고 할당 된 것보다 더 많은 것을 요청하면이 제약 조건을 없앨 수 있습니다.

+0

java.lang.Runtime 클래스는 최대 메모리 설정이 무엇인지 알려줄 수 있지만 변경할 수는 없습니다. – tgdavies

+0

@tdavies 저는이 값이 불변 인 이유를 알고 있습니다. –

+7

-1 실시간으로 VM 매개 변수를 변경할 수 있습니다! 'com.sun.management.HotSpotDiagnosticMXBean # setVMOption (String, String)'을 살펴보십시오. – Chriss