相关动态
JVM调优常用命令及工具
2024-11-11 02:09

目录

JVM调优常用命令及工具

1、jstat命令

1.1、查看class加载统计

1.2、查看编译统计

1.3、垃圾回收统计

2、jmap命令

2.1、查看内存使用情况 jmap -heap 262968

2.2、查看内存中对象数量及大小

2.3、将内存使用情况dump到文件中

2.4、通过jhat对dump文件进行分析

2.5、通过MAT工具对dump文件进行分析

3、jstack命令

4、jdk自带jvisualvm工具

5、gc日志分析工具gceasy


jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。

 

1.1、查看class加载统计

E:IDEAWorkSpacezsy-teacher-server>jps -l 455796 org.jetbrains.idea.maven.server.RemoteMavenServer 212432 468948 sun.tools.jps.Jps 262968 com.zhixinhuixue.teacher.academic.ZSYAcademicApplication 328040 org.jetbrains.jps.cmdline.Launcher 380680 org.jetbrains.jps.cmdline.Launcher

E:IDEAWorkSpacezsy-teacher-server>jstat -class 262968 加载类数量 占用空间 未加载数量 未加载占用空间  时间       Loaded  Bytes  Unloaded  Bytes     Time  14647 26952.9        0     0.0      12.69

1.2、查看编译统计

E:IDEAWorkSpacezsy-teacher-server>jstat -compiler 262968 编译数量 失败数量 不可用数量 时间  失败类型  失败方法 Compiled Failed Invalid   Time   FailedType FailedMethod     9242      0       0     1.77          0

1.3、垃圾回收统计

每500ms统计一次gc情况,共执行200次。jstat -gc 262968 500 200

S0C:第一个Survivor区的大小(KB) S1C:第二个Survivor区的大小(KB) S0U:第一个Survivor区的使用大小(KB) S1U:第二个Survivor区的使用大小(KB) EC:Eden区的大小(KB) EU:Eden区的使用大小(KB) OC:Old区大小(KB) OU:Old使用大小(KB) MC:方法区大小(KB) MU:方法区使用大小(KB) CCSC:压缩类空间大小(KB) CCSU:压缩类空间使用大小(KB) YGC:年轻代垃圾回收次数 YGCT:年轻代垃圾回收消耗时间 FGC:老年代垃圾回收次数 FGCT:老年代垃圾回收消耗时间 GCT:垃圾回收消耗总时间

jmap可以进行内存使用情况的汇总,并对内存的溢出进行定位与分析。

 

2.1、查看内存使用情况 jmap -heap 262968

 

2.2、查看内存中对象数量及大小

jmap -histo 262968 | more  查看所有对象,包括活跃与非活跃

 

jmap -histo:live 262968 | more   查看活跃对象

 
对象说明
B byte
C char
D double
F float
I int
J long
Z boolean
[ 数组,如 [I 表示 int[]
[L + 类名 其他对象

2.3、将内存使用情况dump到文件中

  • 手动导出dump文件:jmap -dump:live,format=b,file=dump.hprof PID  /  jmap -dump:format=b,file=dump.dat PID
  • 自动导出dump文件(当jvm堆内存溢出时:-XX:+HeapDumponOutOfMemoryError -XX:HeapDumpPath=/home/temp/dump.hprof
 

2.4、通过jhat对dump文件进行分析

jhat -port <port> <file>
 
 

2.5、通过MAT工具对dump文件进行分析

MAT(Memory Analyzer Tool) ,一个基于 Eclipse 的内存分析工具,是一个快速、功能丰
富的 JAVA heap 分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。
http://www.eclipse.org/mat/

 若dump文件过大,可以加大-Xmx

 参考https://www.cnblogs.com/liangzs/p/8489321.html

用法jstack <pid>

 
 

VisualVM,能够监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。 VisualVM使用简单,几乎0配置,功能还是比较丰富的,几乎囊括了其它JDK自带命令的所有功能。

  • 内存信息
  • 线程信息
  • Dump堆(本地进程
  • Dump线程(本地进程
  • 打开堆Dump。堆Dump可以用jmap来生成。
  • 打开线程Dump
  • 生成应用快照(包含内存信息、线程信息等等
  • 性能分析。CPU分析(各个方法调用时间,检查哪些方法耗时多,内存分析(各类对象占用的内存,检查哪些类占用内存多

 

 

https://www.gceasy.io/

 

 

 

 

    以上就是本篇文章【JVM调优常用命令及工具】的全部内容了,欢迎阅览 ! 文章地址:http://zleialh.xhstdz.com/quote/77263.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://zleialh.xhstdz.com/mobile/ , 查看更多   
发表评论
0评