Dump内存快照
在运行java程序的时候,有时候想测试运行时占用内存情况,这时候就需要使用测试工具查看了。在eclipse里面有 Eclipse Memory Analyzer tool(MAT)插件可以测试,而在idea中也有这么一个插件,就是JProfiler,一款性能瓶颈分析工具!
作用:
- 分析Dump文件,快速定位内存泄漏;
- 获得堆中对象的统计数据
- 获得对象相互引用的关系
- 采用树形展现对象间相互引用的情况
安装JProfiler
- IDEA插件安装
- 安装JProfiler监控软件
- 下载地址:https://www.ej-technologies.com/download/jprofiler/version_92
- 我这里提供网盘地址:
链接: https://pan.baidu.com/s/1Aes29xDioujhyXcXbE96Fw 提取码: r2rb 复制这段内容后打开百度网盘手机App,操作更方便哦
- 下载完双击运行,选择自定义目录安装,点击Next。
- 我的 安装路径为:E:\JProfiler\jprofiler12
- 注意:安装路径,建议选择一个文件名中没有中文,没有空格的路径 ,否则识别不了。然后一直点Next。
// 官网9版本 注册码仅供大家参考
L-Larry_Lau@163.com#23874-hrwpdp1sh1wrn#0620
L-Larry_Lau@163.com#36573-fdkscp15axjj6#25257
L-Larry_Lau@163.com#5481-ucjn4a16rvd98#6038
L-Larry_Lau@163.com#99016-hli5ay1ylizjj#27215
L-Larry_Lau@163.com#40775-3wle0g1uin5c1#0674
12版本 网盘注册码:
L-J12-STALKER#5846458-y8bdm6q8gtr7b#228a
L-J12-STALKER#8338547-qywh5933xu2r3#a4a4
- 配置IDEA运行环境
- Settings–Tools–JProflier–JProflier executable选择JProfile安装可执行文件。(如果系统只装了一个版本, 启动IDEA时会默认选择)保存。
- 代码测试:
import java.util.ArrayList;
public class Demo03 {
byte[] byteArray = new byte[1*1024*1024]; // 1M = 1024K
public static void main(String[] args) {
ArrayList<Demo03> list = new ArrayList<>();
int count = 0;
try {
while (true) {
list.add(new Demo03()); // 问题所在
count = count + 1;
}
} catch (Error e) {
System.out.println("count:" + count);
e.printStackTrace();
}
}
}
idea最新版本需要打开VM设置
- vm参数 :
-Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError
- 点击运行后会生成java_pidxxxxx.hprof文件,找到该文件
使用JProfiler打开该生成的文件
使用 Jprofiler 工具分析查看
双击这个文件默认使用 Jprofiler 进行 Open大的对象!
查看错误方式:
- 查看当前对象集的 最大对象
- 进入线程转储 查看当前线程(本方法钟只有一个main线程,故只需要查看main线程即可)
总结:
JPofiler工具分析OOM
MAT, Jprofiler作用
●分析Dump内存文件,快速定位内存泄露;
●获得堆中的数据
●获得大的对象~
MAT是eclipse集成使用 在这里不学
Jprofile使用
1.在idea中下载jprofile插件
2.联网下载jprofile客户端
3.在IDEA设置中指定jprofile的客户端exe文件地址
4.在idea中VM参数中写参数 -Xms1m -Xmx8m -XX: +HeapDumpOnOutOfMemoryError
5.运行程序后在jprofile客户端中打开找到错误 告诉哪个位置报错
命令参数详解
// -Xms设置初始化内存分配大小/164
// -Xmx设置最大分配内存,默以1/4
// -XX: +PrintGCDetails // 打印GC垃圾回收信息
// -XX: +HeapDumpOnOutOfMemoryError //当堆出现oom(堆内存溢出异常)分析 DUMP内存文件 生成调参文件