jconsole
Jdk自带的,可用查看jvm运行时的各种状态动态数据,例:堆内存、线程数、类加载卸载数、CPU占用率等,还可以检测死锁。
可以通过jconsole查询本地jvm进程获取远程jvm进程,注意要查看远程的jvm进程需要在远程tomcat启动脚本中添加以下代码:
-Dcom.sun.management.jmxremote.port=6969
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
连接成功可以展示以下东西:

概览面板可以查看内存线程数、类加载卸载数、以及CPU占有率的走势。
可以点击内存、线程、类页签详细查看,其实内存页,可以查看内存各个部分的详细信息,还可以通过右上角执行GC按钮来查看GC前后内存的对比


还可以在线程页签,点击检测死锁来查看正在互相等待中的死锁线程

visualVM
jdk自带的,可以用来分析dump出来的堆栈文件。

导入需要分析的堆栈文件

通过概要页签可以看到OOM的位置

通过类页签可以判断内存泄露的是哪些对象。

还可以看到内存泄露的位置
本文详细介绍JDK自带工具JConsole和VisualVM的功能与使用方法。JConsole用于实时监控JVM状态,包括内存、线程、类加载及CPU使用情况,并能检测死锁。VisualVM则擅长分析dump文件,定位OOM及内存泄露原因。文章还提供了远程JVM连接配置示例。

被折叠的 条评论
为什么被折叠?



