转:https://blog.csdn.net/zhou920786312/article/details/84195752
内存溢出问题分析——Eclipse Memory Analysis的安装和使用
1安装
在Eclipse help -> Eclipse Marketplace下搜索Memory.找到图中的软件,默认安装就可以。
2测试:
1测试代码
public class Test1 {
public static void main(String[] args) {
List<Demo> list = new ArrayList<>();
while (true) {
list.add(new Demo());
}
}
}
public class Demo {
}
1虚拟机配置
在main方法上,右击鼠标 --> run as--> run configurations.. ,打开run configurations窗口
在run configurations窗口后,设置参数:-XX:+HeapDumpOnOutOfMemoryError -Xms20m -Xmx20m
- -Xms20m -Xmx20m ##设置堆大小20m,并将最小和最大值设置相等,避免扩展
- -XX:+HeapDumpOnOutOfMemoryError ##当前的内存堆转储快照,默认在项目的工作空间
打开windows任务管理器窗口,查看内存
运行结果
3使用Memory Analysis
1打开Memory Analysis
2打开dump文件
4分析
上图中,可以看到demo创建很多
参数
- Shallow Heap浅堆:java对象占用的内存
- Retained Heap深堆:java对象及对象引用的类占用的内存 ,jvm gc回收时释放的内存
- Retained Heap深堆大于等于Shallow Heap浅堆