本篇文章主要介绍了" Eclipse Memory Analyzer toolMAT使用详细说明",主要涉及到方面的内容,对于web前端感兴趣的同学可以参考一下:
在本文中,将介绍MAT如何根据heapdump分析泄漏根源。由于测试范例可能过于简单,很容易找出问题,但我期待借此举一反三。一开始不得不说说ClassLoade...
/** * OOMHeapTest class * @author rosen jiang */package org.rosenjiang.test;
import java.util.Date;import java.util.HashMap;import java.util.Map;import org.rosenjiang.bo.Pilot;
publicclass OOMHeapTest {publicstaticvoid main(String[] args){ oom(); }privatestaticvoid oom(){ Map map = new HashMap(); Object[] array = new Object[1000000];for(int i=0; i<1000000; i++){ String d = new Date().toString(); Pilot p = new Pilot(d, i); map.put(i+"rosen jiang", p); array[i]=p; } }}
是的,上面构造了很多的Pilot类实例,向数组和map中放。由于是StrongRef,GC自然不会回收这些对象,一直放在heap中直到溢出。当然在运行前,先要在Eclipse中配置VM参数-XX:+HeapDumpOnOutOfMemoryError。好了,一会儿功夫内存溢出,控制台打出如下信息。