CentOS 7.x 扩容 #
2022-05-26 09:27
不重启Java 进程,导出dump 文件的方法 #
首先,查看gc 情况:jstat -gcutil $pid $time
$ jstat -gcutil $pid $time
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 100.00 12.91 61.13 96.44 93.83 201 56.754 4 58.699 115.453
0.00 100.00 4.25 51.06 96.44 93.83 202 56.783 4 58.699 115.482
0.00 100.00 10.68 60.63 96.44 93.83 202 56.783 4 58.699 115.482
手动导出当前时点的dump 文件 #
jmap -dump:format=b,file=$dump_file_path $pid
另一种方式:
jcmd $pid GC.heap_dump -all $dump_file_path
在jvm 发生异常时,自动导出dump 文件 #
-
查看jinfo 可以调整的参数:
java -XX:+PrintFlagsFinal -version|grep manageable$ java -XX:+PrintFlagsFinal -version|grep manageable …… bool HeapDumpAfterFullGC = false {manageable} bool HeapDumpBeforeFullGC = false {manageable} bool HeapDumpOnOutOfMemoryError = false {manageable} ccstr HeapDumpPath = {manageable} ……主要关注以上几个参数:
- FullGC 前导出:HeapDumpBeforeFullGC
- FullGC 后导出:HeapDumpAfterFullGC
- 发生OutOfMemory 时导出:HeapDumpOnOutOfMemoryError
- dump文件保存目录:HeapDumpPath
-
设置jvm参数,fullgc前dump 文件:
jinfo -flag +HeapDumpBeforeFullGC $pid -
设置dump文件保存目录:
jinfo -flag HeapDumpPath=$file_path $pid -
查看jinfo设置的参数值:
jinfo -flag $param_name $pid,比如jinfo -flag HeapDumpPath 9846
分析dump 文件 #
使用 MAT 查看分析dump文件,通常使用这两个菜单。
Histogram: Lists number of instances per class
Dominator Tree: List the biggest objects and what they keep alive.