2014-11-27 5 views
3

JVM이 -XX : + HeapDumpOnOutOfMemoryError 매개 변수를 사용하여 시작되었습니다. 그러나 outofmemory에 heapdump를 생성하지 않습니다.원시 할당 실패시 Java가 힙 덤프를 생성하지 않음

네이티브 할당이 실패 할 때 Java가 힙 덤프를 만들지 않습니까? 다음

로그입니다 : 최대 힙 크기가 4GB의 설정 --EDIT--

# There is insufficient memory for the Java Runtime Environment to continue. 
# Native memory allocation (malloc) failed to allocate 1184288 bytes for Chunk::new 
# An error report file with more information is saved as: 
# D:\product\bin\hs_err_pid5876.log 
java.lang.OutOfMemoryError 

는, 시스템의 RAM 크기가 16기가바이트이며 메모리가 부족 때이었다 > 11GB를 사용하여 Windows 작업 관리자가 표시합니다.

@ alain.janinm ....와의 토론에서 JVm이 힙 덤프를 생성하기에 충분한 메모리가 없다고 결론을 내릴 수 있다고 생각합니다.

는 그래서, 힙 덤프를 생성하는 것은 JVM 오류 발생 된 java.lang.OutOfMemoryError에 따르면

+0

사용중인 Java 버전은 무엇입니까? –

+0

jdk1.6 @ alain.janinm을 (를) 사용하고 있습니다. –

+0

정확한 버전을 제공 할 수 있습니까? 이 업데이트 25입니까? 이 버전의 버그는 http://bugs.java.com/view_bug.do?bug_id=7042582입니다. 페이지 끝 부분에 해결 방법이 있습니다. –

답변

2

그렇게 많은 시스템 메모리를 사용하는 발생했다 가능성이있다. 나머지 스택 추적은 원시 힙에서 발생했음을 나타냅니다. 따라서 Java VM 코드가 아닌 JNI 또는 원시 메소드에서 할당 실패가 감지되었습니다. (Troubleshooting memory leaks)

아마도 힙 덤프가 생성되지 않은 것입니다. XX:+HeapDumpOnOutOfMemoryErrordocumentation에 따르면

-XX : + HeapDumpOnOutOfMemoryError 명령 줄 옵션은 Java 힙 또는 영구 세대 할당을 만족하지 않는 경우 힙 덤프를 생성하는 핫스팟 VM을 알려줍니다.

힙이 아닌 원시 힙에서 할당이 실패했기 때문에 덤프가 작성되지 않았기 때문에.

+0

하지만 java.lang.OutOfMemoryError를 던졌습니다 .... 그 두 가지가 모두 발생했음을 의미하지는 않습니까? –

+1

이 경우에는 제공된 로그에 따라 네이티브 힙에 의해서만 throw됩니다.만약 그것이 자바 힙 이었다면, 당신은이 '자바 힙 공간'을 로그에 가질 것이다. –