2010-08-21 4 views
6

저는 현재 VisualVM을 사용하고 있습니다. 그러나 문제는 제가 생성 한 그래프를 저장할 수 없다는 것입니다. 실행 시간은 System.nanoTime()으로 쉽게 얻을 수 있지만 메모리 사용량과 실행 시간에 대한 데이터를보고해야합니다. 또한 NetBeans 프로필러을 시도했지만 너무 느려질 수있는 특정 부분을 찾지 않았으므로 과망이 될 수 있으므로 원하는 내용이 아닙니다. 가장 큰 문제는 너무 많은 처리 시간을 소비한다는 것입니다. 또한 적어도 내가 알 수있는 한 VisualVM과 같은 데이터를 쉽게 캡처/전송할 수는 없습니다.Java 프로그램의 메모리 사용을 측정하는 가장 좋은 방법은 무엇입니까?

가장 좋은 방법은 정보를 더 쉽게 얻을 수 있기 때문에 일부 메소드 호출이 될 것입니다. 실제로 VisualVM을 사용하면 실제로 그래프를 저장할 수 있기 때문에 괜찮습니다. VisualVM을 사용한 성능은 NetBeans 프로파일 러와 비교해도 꽤 좋습니다. 프로파일 러를 사용하지 않았기 때문입니다.

현재 우분투를 사용하고 있지만 Windows 7은 정상입니다. JVM과 다른 것들을 포함하지 않는 프로그램에 의해 얻은 정보는 더 잘 버려지므로 앞으로이 일을 전문으로하는 프로그램을 갖고 싶습니다.

음, 외관상으로는 현재 세션의 스냅 샷을 저장하고 VisualVM에서 창을 최대화 할 수 있으므로 차트를 더 크게 만들 수 있고 스냅 샷을 찍어 잘라낼 수 있습니다.하지만 그건 일종의 해킹입니다. 더 나은 제안을 환영합니다.

답변

0

시도 JProfiler. 무료가 아니더라도 먼저 평가판을 사용해 볼 수 있습니다.

3

Runtime 클래스를 살펴보십시오. freeMemory, maxMemory 및 totalMemory가 있습니다. 아마 당신의 목적에 충분히 가깝습니다.

0

HPjmeter 콘솔은 무료입니다. -Xloggc:<file>으로 Java 프로세스를 실행하고 <file>을 엽니 다. 세션을 저장할 수있을뿐만 아니라 실행을 비교할 수 있습니다. 명령 줄에 포함시킬 수있는 다른 옵션은 다음과 같습니다.

-XX:+PrintGCTimeStamps 
-XX:+PrintGCDetails 
2

이미지를 해킹하는 대신 메모리를 측정하는 것이 더 좋을 수 있습니다. JConsole은 JMX으로 응용 프로그램을 모니터하는 것으로 알려져 있으며 프로그램 API를 제공합니다. 나는 그것이 당신이 필요로하는 것 같아요.

참조 : Using JConsole to Monitor Applications

15
Runtime.getRuntime().freeMemory(); 

Runtime.getRuntime().totalMemory();