Eclipse Memory Analysis的安装和使用+分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhou920786312/article/details/84195752

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虚拟机配置

参数:

  • -Xms20m -Xmx20m ##设置堆大小20m,并将最小和最大值设置相等,避免扩展
  • -XX:+HeapDumpOnOutOfMemoryError ##当前的内存堆转储快照,默认在项目的工作空间

 运行结果
 
 

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid73264.hprof ...
Heap dump file created [27891169 bytes in 0.102 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2245)
    at java.util.Arrays.copyOf(Arrays.java:2219)
    at java.util.ArrayList.grow(ArrayList.java:242)
    at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:216)
    at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:208)
    at java.util.ArrayList.add(ArrayList.java:440)
    at com.fei.zhou.day1.Test1.main(Test1.java:11)

3使用Memory Analysis

1打开Memory Analysis

2打开dump文件 

4分析

上图中,可以看到demo创建很多

参数

  • Shallow Heap浅堆:java对象占用的内存
  • Retained Heap深堆:java对象及对象引用的类占用的内存 ,jvm gc回收时释放的内存
  • Retained Heap深堆大于等于Shallow Heap浅堆

猜你喜欢

转载自blog.csdn.net/zhou920786312/article/details/84195752
今日推荐