jcmd

GC.class_histogram (힙 히스토그램 출력)

jcmd <PID> GC.class_histogram
  
 num     #instances         #bytes  class name
----------------------------------------------
   1:        295177       29451816  [C
   2:         25218       27183000  [B
   3:        398213        9557112  java.lang.String
   4:        249477        7983264  java.util.HashMap$Node
   5:         22932        5951656  [I
   6:         44777        3305680  [Ljava.util.HashMap$Node;
   7:         65139        3245736  [Ljava.lang.Object;
   8:         55669        2693552  [Ljava.lang.String;
   9:         33084        2382048  java.lang.reflect.Field
  10:         20274        2344280  java.lang.Class

GC.heap_dump (힙 덤프 - 죽은 객체 포함)

jcmd <PID> GC.heap_dump /path/to/heap_dump.hprof

jmap

-histo (히스토그램 출력 - 죽은 객체 포함)

jmap -histo <JAVA PID>

-histo:live (히스토그램 출력 - 살아있는 객체만 / 주의: FGC 발생)

jmap -histo:live <JAVA PID>

-dump (힘덤프 - 죽은객체 포함)

jmap -dump,file=/path/to/heap_dump.hprof <JAVA PID>

-dump:live (힘 덤프 - 살아있는 객체만 / 주의: FGC발생)

jmap -dump:live,file=/path/to/heap_dump.hprof <JAVA PID>

jstack

jstack <JAVA PID>

# 강제 스레드덤프 (자바프로세스 맛탱이 가서 응답없을 경우..)
jstack -F <JAVA PID>

# C/C++ 스택프레임도 출력
jstack -m <JAVA PID>

jstat

-gcutil (GC 상태 출력)