Eclicpse 中可以集成MAT,即 Memory Analyzer Tool。进行性能分析。
而IntelliJ 里面可以用jprofiler 进行vm 性能分析。
jprofiler功能
JProfile是一款性能瓶颈分析工具,监控粒度可以细化到某一个类包。
主要功能有:
1.内存剖析 Memory profiler
2.堆遍历 Heap walker
3.CPU 剖析 CPU profiler
4.线程剖析 Thread profiler
5.VM 遥感勘测技术 VM telemetry
jprofiler安装
首先,从官网下载安装jprofiler
这里我下载的v11版本,需要破解,这里给个破解的链接
下载安装后,效果如下

与IntelliJ集成
IntelliJ 里安装插件后,才能与jprofiler集成。下载链接
插件安装成功后,重启IntelliJ,可以看到已经有jprofiler 工具图标

点击图标后,发现需要指定可执行的程序
windows上指向 bin\jprofiler.exe 文件即可。
mac上路径应该是 Contents/Resources/app/bin/macos/jprofiler.sh
linxu上应是 bin/jprofiler
集成后,点击图标即可使用
实战
测试代码,这里为了看效果,每个循环中sleep 2s
1 2 3 4 5 6 7 8 9 10 | public class MyMain { public static void main(String[] args) throws InterruptedException { Vector v = new Vector<>(); for (int i = 0; i < 25; i++) { v.add(new byte[1 * 1024 * 1024]); Thread.sleep(2000); } } } |
配置jvm参数

参数如下:
1 | -Xms10m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/Users/zhangwei/logs/a.dump |
点击图标运行,会自动启动jprofiler

可以直接看出各个指标:内存、GC的活动、类、线程等
JVisualVM
导出的 dump文件,可以用 分析
mac上java路径如下;
1 | /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/bin |
执行命令启动
1 | ./jvisualvm |
启动后利用visualvm打开刚才的dump文件

查看dump快照发现,第二行的实例最多

可以查看各个类的实例和大小