2009-12-02 5 views
21

-XX:-HeapDumpOnOutOfMemoryError 옵션을 사용하여 64 비트 JVM에 의해 덤프 된 6.5GB Hprof 파일이 있습니다. 16GB 64 비트 머신에 앉아서 jhat으로 가져 오려고하지만 메모리가 부족한 상태로 유지됩니다. 최소한의 설정을 위해 jvm args를 전달하려고 시도했지만 모든 최소값을 거부하고 최대 값에 도달하기 전에 메모리가 부족한 것 같습니다.jhat에 큰 hprof로드

메모리가 부족한 jvm이 힙을 덤프하여 너무 두꺼운 RAM이있는 상자에로드 할 수 없다는 것은 어리석은 것처럼 보입니다. 이 방법을 사용하거나 분석을 할부 상환 할 방법이 있습니까?

+0

https://stackoverflow.com/questions/7254017/tool-for-analyzing-large-java-heap-dumps – rogerdpack

답변

18

나는 eclipse memory analyzer을 살펴볼 것입니다. 이 도구는 훌륭합니다. 그리고이 도구로 여러 가지 힙 힙을 살펴 봤습니다. 이 도구에 대한 좋은 점은 덤프에 색인을 생성하여 한번에 모두 메모리에 있지 않다는 것입니다.

+1

이 방법도 유용합니다. 실제로 좀 더 작은 힙 덤프를 사용하기 전에 시도해 보았지만 실제로 도움이되는 정보는 제공하지 못했지만 일단 HeapDumpOnOutOfMemoryError hprof를 사용하면 정확한 문제를 지적했습니다. – liam

+0

불행히도 MAT는 여전히 나를 위해 많은 RAM을 사용했습니다 [ "실패 자바 힙 공간"], http://stackoverflow.com/questions/7254017/tool-for-analyzing-large-java-heap-dumps – rogerdpack

0

jhat에게 전달하는 플래그는 무엇입니까? 64 비트 모드이고 힙 크기를 충분히 크게 설정해야합니다.

13

에 해당하는 명령을 jhat을 시작하는 명령으로 사용하십시오. 즉, 최대 힙 크기가 16 기가 바이트 인 64 비트 모드에서 jhat가 시작됩니다.

플랫폼의 JVM이 기본적으로 64 비트 모드 작동 인 경우 -J-d64 옵션은 필요하지 않습니다.

4

11 메가 바이트 hprof 파일을로드해야하고 이클립스 메모리 분석기를 사용할 수 없습니다. 내가 한 일은 무작위로 인스턴스 정보를 제거하여 hprof 파일의 크기를 줄이는 프로그램을 작성하는 것이 었습니다. hprof 파일의 크기가 1GB로 내려지면 이클립스 메모리 분석기로 열 수있어 메모리 누수의 원인을 파악할 수 있습니다.

+11

유사한 도구를 작성하는 방법을 도구 나 세부 사항에 공유 하시겠습니까? – BeeOnRope