JVM常用参数设置以及排查工具jstat,jmap介绍

常用的参数设置

参数 解释 备注
-Xms 最小的heap内存 如:-Xms215m,建议最小值与最大值-Xmx设置相同,避免自动扩展
-Xmx 最大的heap内存 -Xmx215m
-XX:+HeapDumpOnOutOfMemoryError 当虚拟机出现内存溢出时Dump当前的heap内存快照 生成的文件名:java_pid线程idhprof的文件,存储位置默认在应用程序相同目录,如:java_pid36108.hprof
-Xss 内存栈的容量,当出现栈内存溢出时抛出:StackOverflowError异常 ,一般不用设置 如:-Xss128m
-XX:PermSize=10M,-XX:MaxPermSize 永久代容量,JDK8使用元空间替代,改设置已过时 -XX:MaxPermSize
-Verbose:gc 开启GC日志输出,测试调试可以开启与 -Xloggc
-Xloggc:/usr/llog/gc日志输出路径 与上面的-Verbose:gc结合使用
-XX:+PrintGCDetails 输出gc日志详细信息
-XX:SurvivorRatio 新生代Eden区域与Survivor区域的容量比,默认8 默认8

常用工具命令

jps

命令 工具 使用
jps 显示java进程信息 如:jps -l ,输出主类全名,jar包则输出jar路径
jps -v ,显示java进程启动参数
[root@centos2 project]# jps -l
16577 user_service-1.0-SNAPSHOT.jar
16676 sun.tools.jps.Jps
[root@centos2 project]# jps -v
16577 jar -Xmx256m -Xms256m
16713 Jps -Denv.class.path=.:/usr/java/jdk1.8.0_271-amd64/lib/dt.jar:/usr/java/jdk1.8.0_271-amd64/lib/tools.jar -Dapplication.home=/usr/java/jdk1.8.0_271-amd64 -Xms8m

jstat

常用
jstat -gcutil pid
jstat -gcutil pid 间隔毫秒 总查询次数,如:jstat -gcutil pid 500 100,每隔500毫秒查询一次pid的heap内存占用情况,共查询100次

[root@centos2 ~]# jstat -gcutil 36108 2000 100
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
  0.00   0.00   1.84  60.00  94.66  91.52    119    0.358     3    0.227    0.585
  0.00   0.00   1.84  60.00  94.66  91.52    119    0.358     3    0.227    0.585

S0/S1:S0、S01 所占用的百分比
E:eden区锁占用的百分比
O:老年代占用的百分比
M:元空间占用的百分比(JDK1.8+)
CCS:压缩类占用空间百分比
YGC:young GC的次数
YGCT:young GC的占用时间,单位秒
FGC:full GC的次数
FGCT:full GC占用的时间,单位:秒
GCT:所有GC的总耗时,单位:秒

jhat

线上分析dump文件的工具,使用 jhat 文件名,会生成一个浏览器链接+端口号,默认端口7000,具体见输入命令后的控制台输出,直接在浏览器输入ip+端口可以查看,测试环境可用,生产环境不建议使用,比较耗时,功能不够强大,分析结果也比较简单。

[root@centos2 project]# jhat java_pid36108.hprof 
Reading from java_pid36108.hprof...
Dump file created Mon Nov 01 00:46:19 CST 2021

Guess you like

Origin blog.csdn.net/weixin_48470176/article/details/121064150