2011-12-19 1 views
3

가능한 중복 :
Read Java JVM startup parameters (eg -Xmx)-Xms -Xmx 및 -XX : MaxPermSize JVM 인수 값을 검사하도록 프로그래밍 방식으로 액세스하려면 어떻게해야합니까?

내가 Tomcat 서버에서 응용 프로그램을 실행하는거야, 그리고 내가 -Xms -Xmx-XX:MaxPermSize JVM 인수 값의 값에 액세스 할 그래서 내가 할 수있는 그 디버깅에 도움이되도록 로그하십시오.

System.properties에 나열된 이러한 인수를 찾으려고 시도했지만 System.getEnv()을 사용했지만 존재하지 않습니다. 그 (것)들을 얻기위한 또 다른 방법은, 또는, System.propertiesSystem.getEnv()에있는 존재의 그들의 부족은이 선택권이 놓이지 않았다 표시입니까?

+0

가 도움이 그이 포함 플랫폼에서 제공하는 MBean의 일부에 대한 편리한 방법을 (당신이 당신의 자신의 수) 모두의 MBean에 일반 액세스를 허용하지만,이 솔루션, 아래에 나열된 Runtime.totalMemory() 아이디어는 -Xms가 설정되지 않은 경우 유용하지만 기본적으로 얼마나 많은 메모리가 있는지보고 싶을 때 좋은 보완책입니다 (밝혀진 바와 같이). 내 문제의 경우). –

+0

프로그래밍 방식으로하는 이유는 무엇입니까? Tomcat 구성에서 설정됩니다. 모든 시작시이를 복사하십시오. – EJP

+0

나는 서버를 제어하지 않기 때문에 시스템 관리자를 추적하고 괴롭히지 않고도 Tomcat 구성에 액세스 할 수 없기 때문에. –

답변

2

Runtime.totalMemory() (물론 사용 권한이 있거나 보안이 사용 중지 된 경우)은 무엇입니까?

또 다른 해결 방법은 tomcat을 시작한 명령 줄을 검색하고 구문 분석하는 것입니다. 리눅스에서는 쉽지만 창문에서는 ...

+0

이것은 Xms 용입니다. Xmx Runtime.getRuntime(). maxMemory()'를 사용할 수 있습니다. – John29

4

총, 최대 및 사용 가능한 메모리를 포함하여 런타임 클래스에서 기본 정보를 얻을 수 있습니다. 자세한 내용은 Runtime JavaDoc을 참조하십시오.

정보가 충분하지 않은 경우 관리 확장을 사용하여 각 메모리 풀에서 현재 및 최대 메모리 사용량에 대한 더 많은 정보를 얻을 수 있습니다. Oracle JDK에 포함 된 JConsole의 MBeans 탭을 사용하여 실행중인 JVM에 대한 사용 가능한 모든 정보를 검색 할 수 있습니다. 특히 객체 이름이 java.lang:type=Memory이고 java.lang:type=MemoryPool,name=* 인 MBean을 살펴보십시오.

필요한 정보로 MBeans를 식별하면 ManagementFactory 클래스를 사용하여 프로그래밍 방식으로 액세스 할 수 있습니다.