Skip to main content
  1. posts/

JVM

·363 words·1 min

思维导图

常用命令

# dump堆内存
jmap -dump:format=b,file=<filePath> <pid>
jmap -dump:format=b,file=app.hprof 45

#查看GC情况
jstat -gcutil <pid> 1s #每1秒打印gc基本信息
jstat -gc 45 250 10 #每250毫秒打印Java进程45的gc详细信息,一共打印10次
jstat -class 45 #查看类加载信息

JVM必备调优参数

-XX:+UseConcMarkSweepGC  #设置垃圾回收器为CMS(Java8默认新生代为PS,老年代为SerialOld)

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof #设置oom时自动dump堆

# 打印gc log
-XX:+PrintGCDetails -Xloggc:/Users/abner/Downloads/jvm-gc.log

-Xmx1g -Xms1g #稳定堆大小,避免启动时触发过程fullGC

-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m #稳定元空间大小,避免启动时触发过程fullGC(默认才几十M)

##配置gc日志详情
-XX:+PrintGCDetails 
## 配置引用gc耗时
-XX:+PrintReferenceGC

## 中文释义:尽可能启用并行引用处理
## 使用方法:通过-XX:+ParallelRefProcEnabled开启,或者-XX:-ParallelRefProcEnabled关闭

JVM内存结构

image.png

参考

https://tech.meituan.com/2020/11/12/java-9-cms-gc.html (常见oom问题分析) https://www.cnblogs.com/jmcui/p/12051328.html (参数使用手册)