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
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参数
参数如下:
-Xms10m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/Users/zhangwei/logs/a.dump
点击图标运行,会自动启动jprofiler
可以直接看出各个指标:内存、GC的活动、类、线程等
JVisualVM
导出的 dump文件,可以用 分析
mac上java路径如下;
/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/bin
执行命令启动
./jvisualvm
启动后利用visualvm打开刚才的dump文件
查看dump快照发现,第二行的实例最多
可以查看各个类的实例和大小
安装Visual GC
Visual GC是Visual VM的一个插件。
执行命令启动 Visual VM
点击菜单: 工具 => 插件
勾选 后安装即可:
然后选择某个VM,点击 “Visual GC”即可查看
提供:Spaces、Graphs、Histogram。
Spaces
Metaspace(Java8以前是持久代 Perm)
Old:老年代
Eden: 新生代Eden区
S0和S1:新生代的两个 Survivor 区
Graphs
大概8个指标的时间动态图
Histogram
Survivor区内存使用的详细情况
安装BTrace
Btrace基于动态字节码修改技术(Hotswap)来实现运行时java程序的跟踪和替换。脚本用java编写的。
勾选 BTrace 插件
安装即可