JVM 调优工具

JDK 的 bin 目录的常用工具

1.jps

  1. jstat

-class(监视类装载、卸载数量、总空间以及耗费的时间)
jstat -class 10470(进程id)

jstat -compiler 10470

jstat -gc 10470
jstat -gc 10470 1000 50 (1000表示每秒输出一次,50表示总共打印50次)

 S0C    S1C     S0U    S1U      EC       EU        OC         OU       MC     MU     CCSC   CCSU      YGC    YGCT    FGC    FGCT     GCT   
13312.0 9728.0  0.0   9584.2 278016.0 197948.5  104960.0   23710.5   32512.0 30789.6 4096.0 3744.1     11    0.087   1      0.024    0.111
13312.0 9728.0  0.0   9584.2 278016.0 197948.5  104960.0   23710.5   32512.0 30789.6 4096.0 3744.1     11    0.087   1      0.024    0.111

-gccause
LGCC:最近垃圾回收的原因
GCC: 当前垃圾回收的原因
3. jinfo : 可以用来查看正在运行的java的应用程序的扩展参数,甚至支持在运行时,修改部分参数
参数: -flag pid:打印指定jvm的参数值
-flag[+|-] pid:设置指定jvm参数的布尔值
-flag = pid: 设置指定jvm参数的值
用法: jinfo -flag +PrintGCDetails 10470 添加+PrintGCDetails,让源程序能打印GC的log
4. 内存dump工具----jmap

使用Memory Analyzer Tool =MAT (分析hprof文档,找到内存泄露)
http://www.eclipse.org/mat/downloads.php
jmap -dump:file=10470.hprof 10470
当运行程序中添加-XX:+HeapDumpOnOutOfMemoryError,一旦出现outOfMemory 错误的时候,就会生成一个*.hprof文件,生产环境可以设置该参数,然后方便后面查找问题
-XX:HeapDumpPath=/tmp/dump/10470.hprof 配置dump的路径
5. 堆栈跟踪工具--jstack

Attach Listener: 负责接收外部命令
Single Dispactcher: 接收命令收分发给不同的模块
Finalizer:执行用户finalizer 方法的线程
Reference Handler:处理对象引用(软引用/弱引用/虚引用)

  1. java VisualVm
    关于插件,原配置的插件无法正常使用,需要在Github 上重新找到后重新配置:http://visualvm.github.io/archive/uc/8u40/updates.xml.gz
原文地址:https://www.cnblogs.com/wanthune/p/12905938.html