【JVM】内存快照分析工具Jprofiler
OOM了,怎么办?
最好能够快速找到代码第几行出错:
内存快照分析工具:MAT,Jprofiler
MAT、Jprofiler 作用:
- 分析Dump内存文件,快速定位内存泄漏。
- 获得堆中的数据
- 获得大的对象
Jprofiler安装:
- IDEA插件中搜索Jprofiler即可,安装好restart IDEA
- 去网页搜索Jprofiler,下载对应的操作系统的安装文件
3.安装好应用即可。
Jprofiler使用:
举例说明,写一个OOM的情况
package com.gao.test.JVM;
import java.util.ArrayList;
/**
* @Author lie
* @Description
*/
/**
* VM options:
* -Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError
*
* -Xms:初始化内存分配大小 (默认 1/64)
* -Xmx:最大分配内存 (默认 1/4)
* -XX:+PrintGCDetails 打印GC垃圾回收信息
* -XX:+HeapDumpOnOutOfMemoryError 打印OOM信息
*/
public class OomTest {
byte[] array = new byte[1024 * 1024]; //1m
public static void main(String[] args) {
ArrayList<OomTest> list = new ArrayList<>();
int count = 0; //计数器
try {
while (true){
list.add(new OomTest()); //问题所在
count += 1;
}
}catch (Error e){ //要用ERROR捕捉OOM错误
System.out.println("count = "+count); //打印创建了几个对象后OOM
e.printStackTrace();
}
}
}
运行后看看
dump出来的文件在这
用Jprofiler打开,分析并排查原因:
查看线程,找到问题所在
说谎de嘴: 还有一个可能性,就是 application.yml 或者application.proterty 前面的application 必须拼对,并且不能改名
说谎de嘴: 应该是 Atom Material Icons 插件,记不太清了
J_Surper: idea啥主题啊
山鬼谣me: 补充下:mklink /j 和/d 差不多,就是绝对路径和相对路径区别。
山鬼谣me: 其实只是在D盘多了一个入口,文件依旧安装在C盘。不信可以去C盘里点开看;mklink /j 本质是对源目录进行引用,并不能改变安装路径。