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
标签:java,jar,XX,GC,JVM,jstat,jps,参数设置 来源: https://blog.csdn.net/weixin_48470176/article/details/121064150