JVM:JVM调优-工具学习
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的位置
通过类页签可以判断内存泄露的是哪些对象。
还可以看到内存泄露的位置