4、jstack命令jstack:输出指定进程当前时刻在JVM中的线程信息,为了清楚的展示其效果 , 在服务启动时创建线程死锁 , 然后通过该命令就会把发生死锁的线程打印出来 , 通过输出可以发现两条互相等待的线程信息;
$ jstack 1281Found one Java-level deadlock:============================="test-thread-02":waiting for ownable synchronizer 0x00000007b00a35d0, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),which is held by "test-thread-01""test-thread-01":waiting for ownable synchronizer 0x00000007b00a35a0, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),which is held by "test-thread-02"Java stack information for the threads listed above:==================================================="test-thread-02":at sun.misc.Unsafe.park(Native Method)- parking to wait for<0x00000007b00a35d0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)"test-thread-01":at sun.misc.Unsafe.park(Native Method)- parking to wait for<0x00000007b00a35a0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)Found 1 deadlock.
5、jmap命令jmap:可以输出指定进程的内存中对象映射信息,或者堆的关键信息、内存的使用统计、GC算法、配置、类的实例信息及内存占用等 , 该命令在解决JVM问题时也经常使用;
$ jmap 1281$ jmap -heap 1281Heap Configuration:MinHeapFreeRatio= 0MaxHeapFreeRatio= 100MaxHeapSize= 536870912 (512.0MB)Heap Usage:PS Young GenerationEden Space:From Space:To Space:PS Old Generation$ jmap -histo:live 1281 num#instances#bytesclass name----------------------------------------------1311:132com.explore.facade.FacadeApp$$EnhancerBySpringCGLIB$$313d9e3
四、可视化工具1、jconsoleJava内置的JVM性能监控工具,在熟悉上述的命令行工具之后,对于该可视化工具的使用不会太陌生 , 在命令中可以查看到的默认参数或者应用自定义配置,在该工具中也可以找到,并且以图形化的方式呈现;
$ jconsole# 通过该命令会唤起jconsole界面

文章插图
这里选择线程一栏,可以直观的看到线程数量的变化曲线,也可以在下方查看某个线程的具体信息,并且可以通过检测死锁功能 , 发现在服务中创建的test-thread-01和test-thread-02两条线程;

文章插图
2、visualvmVisualVM作为解决JVM问题的常用工具,集成的功能丰富且强大,此处通过Idea插件的方式启动FacadeApp微服务,在进程主页可以看到自定义的配置,线程一栏因为检测到死锁直接给到异常提示;

文章插图
在监视一栏可以通过【堆dump】查看详细的信息 , 可以查看类的实例数和大小 , 并且完成了结果排序和占用统计;此处信息在定位和解决JVM问题时非常重要;

文章插图
对于JVM的监控工具来说,其能力与常用的命令行语法差异很小,并且这些命令在jdk中
tools.jar
包也可以找到其对应的类,对于一些更高级的监控平台来说 , 例如Kuboard、Skywalking等 , 也对这些底层能力做了集成,其原理应该也是大同小异 。五、参考源码
编程文档:https://gitee.com/cicadasmile/butte-java-note应用仓库:https://gitee.com/cicadasmile/butte-flyer-parent
【JDK中自带的JVM分析工具】
推荐阅读
- 原神遗迹龙兽怎么速刷材料
- 原神杯中遥吟活动怎么玩
- 中国探险家名字 中国探险排名
- 我的世界10电梯怎么做(我的世界中怎么做大型电梯)
- 谁是登月第一人 中国登月球第一人-宜宾在线
- WiFi万能钥匙中如何连接网络
- Python 根据两个字段排序 中文排序 汉字排序 升序 降序
- Briefings in Bioinformatics-2021 知识图谱-生物信息学-医学顶刊论文:生物信息学中的图表示学习:趋势、方法和应用
- 关于 Vue 中 h 函数的一些东西
- 中山市南头镇的邮编是什么 中山市南头镇