如何利用可视化工具进行 JVM 调优

本文深入探讨了Java性能监控工具的使用,包括jps、jinfo、jmap、jhat、jstack和jstat的功能与操作。从显示虚拟机配置信息、生成内存快照到分析线程状态,这些工具帮助开发者定位性能瓶颈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.可视化工具

2.工具的使用

--------------------------

1.可视化工具

jps显示指定系统内所有的HotSpot虚拟机的进程
jstat用于收集HotSpot虚拟机各方面的运行数据
jinfo显示虚拟机配置信息
jmap生成虚拟机的内存转存储快照(heapdump文件),利用这个文件就可以分析内存等情况
jhat用于分析上面jmap生成的heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果
jstack显示虚拟机的线程快照

1.jps:

需要知道的就是程序所运行的进程本地虚拟机唯一ID(LVMID),知道这个ID之后,才可以进行其他监控的操作。

命令格式

  • jps主要选项:
选项解释
-q只输出LVMID,省略主类名称
-m输出虚拟机进程启动时传递给主类main()函数的参数
-l输出主类的全名
-v输出虚拟机进程启动时的 JVM 参数

 

2.jinfo:java配置信息工具:

 

实际的例子:

我们在启动程序的时候设置一些JVM参数: -Xms512m -Xmx512m -Xmn128m -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=15

3.Jmap :Java内存映射工具:

jmap的主要功能就是生成堆转存储快照,之后,我们再利用这个快照文件进行分析。

 

翻译:

-dump 生成java 堆的转粗快照,格式: -dump:[live,]format=b,file=<filename>其中Live自参数的说明是会存在dump除存货的对象

-heap显示Java堆详细信息,如使用哪种回收期、参数配置、分代状况等等。只在Linux/Solaris有效
-finalizerinfo显示在F-Queue中等待Finalizer线程执行finalize方法的对象,只在linux/Solaris有效

 

-permstat以ClassLoader为统计口径显示永久代内存状态,只在Linux/Solaris有效
-histo显示堆中对象统计信息,包括类、实例数量、合计容量

 

 

 

jhat:虚拟机堆转存储快照分析工具

5 jstack:Java堆栈跟踪工具

jstack 命令主要用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的:定位线程出现长时间停顿的原因、请求外部资源导致的长时间等待等这些原因。

选项解释
-F当正常输出的请求不被响应时,强制输出线程堆栈
-l除堆栈外,显示关于锁的附加信息
-m

如果调用到本地方法的话,可以显示C/C++的堆栈

 

 

6 jstat:虚拟机统计信息监视工具

jstat这个工具还是很有作用的,他可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在服务器上,他是运行期定位虚拟机性能问题的首选工具。

  • jstat命令格式:

jstat [选项 vmid [interval[s|ms] [count]]]
  • 相关选项
选项解释
-class监视类装载、卸载数量、总空间以及类装载所耗费的时间
-gc监视Java堆状况,包括Eden区、两个Survivor区、老年代、永久代等容量、已用空间、GC时间合计等信息
-gccapacity监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间
-gcutil监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
-gccause与-gcutil功能一样,但是会输出额外导致上一次GC产生的原因
-gcnew监视新生代GC状况
-gcnewcapacity监控内容与-gcnew一样,输出主要关注使用到的最大最小空间
-gcold监控老年代GC状况
-gcoldcapacity监控内容与-gcold一样,输出主要关注使用到的最大最小空间
-gcpermcapacity输出永久代使用到的最大最小空间
-compiler输出JIT编译器编译过的方法、耗时等信息
-printcompilation输出已经被JIT编译过的方法

我们这里还关注一下虚拟机GC的状况。

S0:第一个Survivor区的空间使用(%)大小
S1:第二个Survivor区的空间使用(%)大小
E:Eden区的空间使用(%)大小
O:老年代空间使用(%)大小
M:方法区空间使用(%)大小
CCS:压缩类空间使用(%)大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迅捷的软件产品制作专家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值