27.3–工具–VisualVM–使用
测试代码
public class Demo2 {
private static final int _1MB = 1 * 1024 * 1024;
public static void main(String[] args) throws InterruptedException {
int size = 1000 * 10000;
int time = 1000;
byte[] a1 = null;
for (int i = 0; i < size; ) {
System.out.println("次数:" + ++i);
a1 = new byte[_1MB];
Thread.sleep(time);
}
}
}
vm配置
-Xms10M
-Xmx10M
-XX:+UseG1GC
-XX:NewRatio=2
-XX:SurvivorRatio=8
-XX:MaxTenuringThreshold=10
1、监视(CPU,堆,类,线程)
1.1、正常的堆,应该是锯齿周期情况
2、在出现OOME时生成堆
3、内存 性能分析
1、 可以查看哪些对象占用了较多的内存;
2、 哪些对象存活的时间比较长;
4、CPU 性能分析
5、抽样器分析
6、线程分析
7、visual GC 分析(安装插件)
8、快照功能
1、 生成任意个性能分析快照并保存到本地;
2、 可以离线进行性能分析;
Profiler 快照
应用程序快照
9、线程转储的生成与分析
对正在运行的本地应用程序生成线程转储,把活动线程的堆栈踪迹打印出来,帮助我们了解线程运行的情况,诊断死锁、应用程序瘫痪等问题。
10、堆转储的生成与分析
1、 可以看到摘要、类、实例数等信息以及通过OQL控制台执行查询语句功能;
2、 堆转储的摘要包括转储的文件大小、路径等基本信息,运行的系统环境信息,也可以显示所有的线程信息;