Jps
jps 可以看到运行中的java进程
1 | sh-4.2$ jps |
Jcmd
jcmd可以看到运行中的java进程以及参数
1 | sh-4.2$ jcmd |
Jmap
jmap是可以查看整个JVM内存的工具。
jmap -heap <pid>
即可查看JVM堆堆使用情况,主要有两块,一块是Heap配置,另一块是Heap使用情况。
Heap配置中包含了最小堆空余空间比例、最大比例、最大堆大小、新生代大小、老生代大小、新生代比例、老生代比例、原空间大小等等。这部分是Java进程启动的时候由JVM参数决定的
Heap Usage是堆的使用情况,包括新生代使用情况、老生代使用情况(容量、使用、未使用)
1 | sh-4.2$ jmap -heap 364 |
jmap -histo <pid>
可以查看JVM内存中每个类的内存使用情况
1 | sh-4.2$ jmap -histo 370 | less |
jmap -finalizerinfo <pid>
可以看到有多少个对象在等待finalizer
1 | sh-4.2$ jmap -finalizerinfo 370 |
jmap -dump:format=b,file=dump.bin 370
可以把堆中的数据导出到二进制文件中
1 | sh-4.2$ jmap -dump:format=b,file=dump.bin 370 |
Jstack
jstack <pid>
可以看到所有线程目前的栈信息。
1 | "Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007fd8506eb000 nid=0x1a7 in Object.wait() [0x00007fd77b826000] |
Jstat
options
查看options
1 | sh-4.2$ jstat -options |
类加载情况
查看类的个数, 每1000毫秒打印一次,一共打印10次
1 | sh-4.2$ jstat -class 370 1000 10 |
JIT情况
查看JIT实时编译器编译的情况
1 | sh-4.2$ jstat -compiler 370 1000 3 |
GC情况
查看GC情况,每一列分别对应
S0C | 第一个survivor的容量 | |
S1C | 第二个survivor的容量 | |
S0U | 第一个survivor的使用空间 | |
S1U | 第二个survivor的使用空间 | |
EC | eden容量 | eden和survivor的比例是8:1:1 |
EU | eden使用空间 | |
OC | 老年代容量 | |
OU | 老年代使用空间 | |
MC | 方法区的容量 | |
MU | 方法区使用空间 | |
CCSC | 压缩类容量 | 注意被压缩的不是类,而是对象头中指向类的指针被压缩成32位了 |
CCSU | 压缩类使用空间 | |
YGC | YGC的次数 | |
YGCT | YGC的时间 | |
FGC | FULL GC的次数 | |
FGCT | FULL GC的时间 | |
GCT | GC总时间 |
1 | sh-4.2$ jstat -gc 370 1000 3 |
GC capacity情况
主要关注各区域最大最小空间
1 | sh-4.2$ jstat -gccapacity 370 1000 3 |
GC cause 情况
主要关注导致GC的原因
1 | sh-4.2$ jstat -gccause 370 1000 3 |
GC utils情况
主要关注内存占比
1 | sh-4.2$ jstat -gcutil 370 1000 3 |
printcompilation情况
JIT的方法
1 | sh-4.2$ jstat -printcompilation 370 1000 3 |
Jinfo
jinfo能输出一个进程的基本信息,包括他的配置、用户、路径、命令行等等
1 | sh-4.2$ jinfo 370 |
Jhat
jhat是堆快照分析工具,用于分析堆的情况,首先要用jmap导出堆到文件dump.bin中,然后使用jhat分析,再访问7000端口即可
1 | sh-4.2$ jhat dump.bin |
Javah
用于编写JNI方法
JavaP
字节码分析工具
Jshell
Java交互式工具
1 | sh-4.2$ jshell |
- 本文作者: fightinggg
- 本文链接: http://fightinggg.github.io/yilia/yilia/QZX2O0.html
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!