[java] JBoss의 힙 덤프에 HeapDumpOnOutOfMemoryError 매개 변수 사용

-XX:+HeapDumpOnOutOfMemoryError애플리케이션에서 메모리 부족 오류가 발생하면 힙 덤프를 얻기 위해 JVM 시작 옵션에 매개 변수를 JBoss 시작 스크립트에 추가 할 수 있다고 들었 습니다. 이 데이터가 어디서 덤프되는지 궁금합니다. 콘솔 또는 일부 로그 파일입니까? 콘솔에만 있다면 콘솔을 통해 Unix 서버에 로그인하지 않으면 어떻게됩니까?



답변

오라클의 문서 는 다음과 같습니다 .

기본적으로 힙 덤프는 위의 예와 같이 VM의 작업 디렉토리에있는 java_ pid .hprof 파일에 작성됩니다 . -XX:HeapDumpPath=옵션으로 대체 파일 이름 또는 디렉토리를 지정할 수 있습니다 . 예를 들어 -XX:HeapDumpPath=/disk2/dumps
힙 덤프가 /disk2/dumps
디렉토리에 생성됩니다 .


답변

이 덤프는 UNIX 콘솔에서 볼 수 있습니다.

힙 덤프 경로는 언급 된 변수를 배치 한 직후 변수로 제공됩니다.

예 :

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${DOMAIN_HOME}/logs/mps"

언급 된 경로에서 콘솔의 덤프를 볼 수 있습니다.


답변

“VM의 작업 디렉토리”가 무엇을 의미하는지 해독하기가 어렵다는 것을 알았습니다. 내 예제에서는 Java Service Wrapper 프로그램을 사용하여 jar를 실행했습니다. 덤프 파일은 래퍼 프로그램을 배치 한 디렉토리 (예 : c : \ myapp \ bin)에 작성되었습니다. 내가 이것을 발견 한 이유는 파일이 상당히 클 수 있고 위치를 발견하기 전에 하드 드라이브를 채웠기 때문입니다.


답변

“-XX : HeapDumpPath”옵션을 사용하지 않는 경우 JBoss EAP / A의 경우 기본적으로 힙 덤프 파일이 “JBOSS_HOME / bin”디렉토리에 생성됩니다.


답변