2011-07-27 7 views
1

힙 공간에 OutOfMemoryError를 가져 오는 Java 응용 프로그램이 있습니다. -XX : HeapDumpOnOutOfMemoryError를 활성화했으며 결과 hprof 파일이 있습니다.OOM을 발생시키는 스레드에 대한 스택 추적

그러나 덤프는 힙, permgen 등에 많은 공간이 남아 있음을 보여줍니다. 이것은 많은 양의 메모리 (예 : 1GB 어레이)에 대한 단일 요청의 원인 일 수 있다고 생각합니다. 따라서 덤프에 나타나지 않습니다.

기본적으로 OOM이 발생하는 지점에서 OOM을 발생시킨 스레드 스택을보고 싶습니다.

hprof 덤프에서 가능합니까?

답변

2

OutOfMemoryError에 있기 때문에 덤프에 없습니다. 해당 오류의 스택 추적을 포착하고 인쇄하는 경우 해당 오류가 발생한 위치를 알려줍니다.

+0

그게 다야! 그것이 가장 중요한 단일 정보이고, 많은 경우 (예를 들어, 사용 가능한 메모리를 훨씬 초과하는 버그로 인한 대규모 배열 요청) 그것은 당신이 신경 쓰는 유일한 문제이기 때문에 조금 불행합니다. 당신이 그것을 기록하도록 설정되지 않았거나 로그를 얻을 수 없다면, 당신은 SOL입니다. – BeeOnRope

+0

특히 XX를 사용하는 경우 동의합니다 : HeapDumpOnOutOfMemoryError 쉽게 추적을 포함 할 수 있습니다! –