Java与C++之间有一睹由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。
VisualVM是功能最强大的运行监视和故障处理程序之一,曾经在很长一段时间内是Oracle官方主力发展的虚拟机故障处理工具。
1.启动VisualVM和按照插件
配置了环境变量直接在控制台中jvisualvm 或者在jdk bin目录中找到 jvisualvm.exe 点击就可以打开:
找到工具,插件,建议下载上面我点击到插件,可以查看gc日志分析。
实例代码:
/**
* -Xms600m -Xmx600m -XX:SurvivorRatio=8
* @author shkstart shkstart@126.com
* @create 2020 21:12
*/
public class OOMTest {
public static void main(String[] args) {
ArrayList<Picture> list = new ArrayList<>();
while(true){
try {
Thread.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
list.add(new Picture(new Random().nextInt(100 * 50)));
}
}
}
class Picture{
private byte[] pixels;
public Picture(int length) {
this.pixels = new byte[length];
}
}
启动程序,打开VisualVM,选中实例进程
在概要中可以看到我们到jvm参数,这里有我们刚刚启动时候所设置到参数,还有系统参数
生成dump文件,执行快照文件等
分析程序等性能:
程序等线程:
其他等大家可以使用插件自己进行分析和玩玩,VisualVM就说到这里了,大家可以自行去进行操作。