暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

jvisualvm | JVM监视和分析工具

左羊公社 2023-03-03
218

前言

前些日子,左羊所在团队遇到一个问题。我们的一个权限修改接口近期总是发生请求超时的请求超时的情况,我的前辈King在和同僚们讨论这个情况时发现了在旮旯(ga三声、la二声)
敲着代码咬着手指的左羊,所以就如同大多数剧情发展一样这个任务有幸被我承接了。
接下就是一些诸位都懂的问题定位操作了,排查日志、观察问题接口代码、DEBUG等常规操作,但这次有些尴尬了通过DEBUG的方式没能直观的定位到关键问题。这是我想之前用的Jstack
[3]、Arthasv
[4]等工具进行排查,但成片的代码与文字不如图表对人类视觉理解来的直接,所以左羊通过度娘、Google等工具了解到了jvisualvm可视化的JVM监视和分析工具,最终通过DEBUG结合jvisualvm的综合定位并解决了问题。
这是我之前输出的Jstack与Arthasv总结文字,有兴趣可以看看。
jstack之记一次生产环境排查记录
Java线上诊断工具-Arthas快用指南
哦!对了。
这个问题是由JPA EnableJpaAuditing 审计功能@EnableJpaAuditing(auditorAwareRef = "auditorAware")
@JoinTable
结合使用时,向Log文件写入日志时发生死循环导致内存溢出造成的,我们通过处理循环关系解决掉了,具体细节就不概述了,下面我们了解下jvisualvm
吧。
jvisualvm面板

jvisualvm简介

jvisualvm是一个可视化的JVM监视和分析工具,它可以帮助开发人员进行各种性能分析和调试操作。使用jvisualvm,用户可以观察JVM中正在运行的进程的CPU使用率、内存使用量、线程状态和堆栈轨迹等信息,并根据这些信息来优化程序性能和调试问题。

jvisualvm具有以下主要功能

  • 内存快照:生成JVM内存快照,跟踪内存泄漏和原因分析;
  • 线程分析:定位线程问题,包括死锁、CPU占用过高等;
  • 监控应用:监控应用服务器的状态,包括CPU占用率、线程数、GC相关信息等;
  • 插件扩展:提供了多种插件来扩展其功能,例如Visual GC插件、Sampler插件等。

jvisualvm所在路径

jvisualvm可通过JDK自带的bin目录下的jvisualvm.exe启动,并且可以连接远程的JVM进程,以便于实时获取信息。
我的jvisualvm所在路径
C:\Java\jdk1.8.0_151\bin
jvisualvm所在路径

jvisualvm的使用

启动
双击这个EXE程序即可
EXE程序

进入面板双击你需要观察的JAVA进程

IDEA进程

概述页

这里能够看一些JVM
参数等信息。

监控页

这里能够观测这个进度的CPU使用情况
堆信息
类信息
线程
的线程变化图,我常用就是这个页面。

详细线程观察页

这里观察具体线程的详细情况。

抽样页

这里观察具体线程对CPU或线程的详细使用情况。

参考文献

1. jvisualvm官方网站 . https://visualvm.github.io/
2. Java VisualVM . https://www.ibm.com/developerworks/cn/java/j-lo-visualvm/index.html
3. 左羊 . jstack之记一次生产环境排查记录 . https://mp.weixin.qq.com/s?__biz=MzU0MTgwODAwNQ==&mid=2247484021&idx=1&sn=5c155432c42d513e95a918cb84ff327e
4. 左羊 . Java线上诊断工具-Arthas快用指南 . https://mp.weixin.qq.com/s?__biz=MzU0MTgwODAwNQ==&mid=2247484252&idx=1&sn=9d8046fbf39983446813497a138f0220
感谢你的观看,YES!
题图 | 图片遵循 CC0 许可协议

文章转载自左羊公社,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论