码迷,mamicode.com
首页 > 其他好文 > 详细

JVM - 内存溢出,问题查找

时间:2019-05-26 15:45:17      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:mic   ror   exce   explicit   nal   对象   问题   exp   eclips   

当内存溢出会抛出 java.lang.OutOfMemoryError: Java heap space 的异常,那这个时候怎样去分析到底哪里导致内存溢出呢?

我们可以通过在vm的参数, -XX:+HeapDumpOnOutOfMemoryError 记住这个理是大写XX。

当内存溢出后,显示

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid1034.hprof ...
Heap dump file created [136202426 bytes in 0.908 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3210)
    at java.util.Arrays.copyOf(Arrays.java:3181)
    at java.util.ArrayList.grow(ArrayList.java:261)
    at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)
    at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)
    at java.util.ArrayList.add(ArrayList.java:458)
    at test.a.Test.main(Test.java:11)

然后可以在项目下,找到上面所指的文件,这里的文件叫,java_pid1034.hprof

直接打开是无法知道里面是什么意思,所以需要eclipse提供的一些工具来进行分析, 可以在网上搜索Eclipse Memory Analysis,或者在Eclipse Market哪里搜索直接下载相关插件就可以了

下面来看看是怎样一个分析过程:

首先我们打开eclipse,双击项目下,刚才的分析文件,就可以打开分析编辑器,点击下图中的按钮,

技术图片

 

在打开的树种可以看到,其中某一项会占据内存比较多的,如果继续展开,会发现,这里会告诉你,那一项会是占据内存的主要原因,这里可以清楚地看到,demo的这个对象,有很多,说明创建这个demo的对象,没有被回收

技术图片

技术图片

 

JVM - 内存溢出,问题查找

标签:mic   ror   exce   explicit   nal   对象   问题   exp   eclips   

原文地址:https://www.cnblogs.com/oscar1987121/p/10926172.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!