JProfiler是一款内存分析工具,可以实时监控当前JVM内存中存活的对象,也可以监控线程,CPU,锁等的情况。
IDEA中如何使用JProfiler?
- 首先下载JProfiler客户端,只安装客户端插件是不行的
点击这里进入下载页面 - IDEA安装JProfiler插件
- 重启IDEA插件并修改Jprofiler执行文件路径
1)安装完了JProfiler插件之后需要重启IDEA
2)重启之后修改JProfiler执行路径
-
执行Java项目并启动JProfiler
使用JProfiler分析JVM内存
如何查看对象的GC Root?
- 打开Live Memory并找到观察对象
- 右键并选择Show Selection In Heap Walker
- 切换Outgoing reference为Incoming reference
由此我们知道了Enhancer这个对象定义在main方法中的,而当前main方法的局部变量记录在Java虚拟机栈中,同时Java虚拟机栈是GC Root之一,所以可以确定Enhancer对象本身就是GC Root。 - 忽略第3步,我们可以使用另一种方式来找GC Root。右键选择 Show In Graph
- 如果第四部还没有找到GC Root,可以点击图上Show Paths To GC Root
- 打开Live Memory并找到观察对象
上面的演示中JVM中运行的代码如下:
import net.sf.cglib.proxy.Enhancer;
public class Main {
public static void main(String[] args) throws InterruptedException {
Enhancer enhancer = new Enhancer();
while(true) {
Thread.sleep(1000);
}
}
static class OOMObject { }
}
如何使用JProfiler分析dump文件?
- 点击Start Center
- 点击Open a Single Snapshot并选择dump文件
如果没有可以使用的dump文件,可以在运行Java项目时使用jmap命令生成dump文件
- ps -ef | grep java 查看需要执行dump操作的Java进程
- jmap -dump:format=b,file=filename.hprof pid
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。