2016-06-20 29 views
8

Java8 핫스팟 VM에서 메타 공간 덤프를 가져올 수있는 도구가 있습니까?Java8 메타 공간 덤프 (힙 덤프가 아님)를 얻는 방법

+3

어떤 형식으로 이것을 얻고 싶습니까? Metaspace의 데이터는 Java 객체가 아닙니다. 아마 HotSpot 내부 구조에 관심이 없지만 다른 부분에 관심이있을 것입니다. – apangin

+0

우리는 응용 프로그램에서 MaxMetaspaceSize의 1G에서 메타 공간 OOM 오류가 발생하고 메타 공간 메모리가 어떻게 사용되고 있는지 알고 싶었습니다. – czh

답변

9

클래스 누수가 발생했습니다.
사용

  • jmap -clstats PID 클래스 로더 통계를 덤프;
  • jcmd PID GC.class_stats로드 된 각 클래스의 메모리 사용에 대한 자세한 정보를 인쇄하십시오. 후자는 -XX:+UnlockDiagnosticVMOptions이 필요합니다.

메타 스페이스의 각 클래스에 힙에 해당 java.lang.Class 인스턴스가 있으므로 힙 덤프가 도움이됩니다.

+0

안녕하세요 apangin, 귀하의 조언을 주셔서 감사합니다. jmap -dump 명령을 사용하여 전체 힙을 덤프 할 수 있었지만 덤프 파일을 분석하기 위해 jhat 명령을 실행하는 데 어려움을 겪고 있습니다. 힙 덤프는 약 5GB이고 jhat는 완료되지 않고 2 시간 동안 실행되었습니다. 정상입니까? – czh

+0

약 2 시간 실행 후 jhat이 결국 힙 공간 OOM 오류로 종료되었습니다. – czh

+1

@czh [Eclipse 메모리 분석기] (http://www.eclipse.org/mat/)는 대형 힙 덤프가있는 경우에도 잘 작동합니다. – apangin