2016-07-06 4 views
0

우리는 Linux에서 oracle jvm 1.8 64bit를 사용하고 있습니다.jmap 외에도 jvm 힙 덤프를 가져 오는 명령 줄 방법이 있습니까?

jmap -F -dump:format=b,file=***filepath*** ***pid*** 

를하지만 느린 :

우리는 jmap는이 JVM 힙 덤프를 얻을 수 있습니다 알고 있습니다.

우리는 JVisualVM 및 JConsole에서 JMX에 연결하면 힙 덤프를 얻을 수 있음을 알고 있으며, 매우 빠릅니다. 그러나 GUI를 사용하고 있습니다.

그러나 Google 제품 환경에는 GUI가 없습니다. GUI가있는 시스템은 해당 환경에 액세스 할 수 없습니다.

그래서 우리의 질문은 - JVisualVM과 JConsole은 힙 덤프를 수행하는 명령 줄을 지원합니까? 또는 jmap 외에도 jvm 힙 덤프를 가져 오는 명령 줄 방법이 있습니까?

[루트 :

1, 우리는 힙 -F 옵션을 사용하지 않고있는 jmap을 사용하여 성공적으로

2 덤프 얻을 수 jvisualvm (원격 JMX)를 사용하여, 덤프 실패 - 우리는 오늘 시도

@ panda01 ~] #에있는 jmap의 -dump : 형식 = B, 파일 =/tmp를/heapdump.31941.hprof 31,941

31941 : 소켓 파일을 열 수 없습니다 : 대상 프로세스가 응답하지 않거나 핫스팟 VM은로드되지

,691,363 (210)

-F 옵션은 대상 프로세스가 성공적으로, -F 옵션을 사용하여 덤프를 jmap은을 사용하여,

3 응답하지 않는 경우에 사용 할 수 있지만, 느린 :

[루트 @의 panda01 ~] # jmap는 -F - 덤프 : 형식 = B, 파일 =/tmp를 기다려주십시오 ID 31941를 처리하기 위해 부착/heapdump.31941.hprof 31,941

...

는 디버거가 성공적으로 연결.

서버 컴파일러가 검색되었습니다.

JVM 버전은

을 만들어

힙 덤프 파일 25.92-B14 /tmp/heapdump.31941.hprof하는 힙 덤프

입니다 ... 그리고 우리는 파일 .hprof 결과 (2 통지). jvisualvm (첫 번째 덤프라고 함)을 사용한 파일 덤프는 jmap -F (두 번째 덤프라고 함)가있는 파일 덤프보다 작습니다. jvisualvm으로보기, 첫 번째 덤프의 인스턴스 수와 크기는 두 번째 덤프의 인스턴스 수와 크기보다 훨씬 적습니다.

답변

1

-F 옵션없이 jmap을 사용하십시오. 빠른 방법 일 것입니다.

차이점은 this answer에 설명되어 있습니다.

-F없이 jmap은 대상 프로세스와 동일한 사용자/그룹으로 실행해야합니다.

+0

고마워! 전에 -F없이 시도했습니다. 그러나 때때로 힙 덤프를 생성하지 않습니다. –

+0

@ForestSoup 위의 링크는 -F없이 jmap이 작동하지 않는 이유를 설명합니다. 그러나 JMX 기반 덤프에는 JVM 협력도 필요합니다. 따라서 JVM이 응답하지 않으면 jmap 또는 JMX 기반 덤프가 작동하지 않습니다. – apangin

+0

-f와 jvisualvm이있는 /없는 jmap을 시도했지만 차이점은 위 질문에 붙여 넣습니다. @apangin, 다시 검토하고 댓글을 주시겠습니까? 감사! –

관련 문제