网上文档不少,但最初都有问题。整理一份,做为备份。使用过程:开发代码写完后,对可能出现内存溢出的代码,添加配置文件,生成.hprof文件,用memory Analyzer分析排查问题,且泄漏内存大小可配置。具体安装测试一条龙以下:eclipse
1.安装:测试
help-》install new software -》work with : 这里填写eclipse版本: Kepler - http://download.eclipse.org/releases/kepler(注意这里不一样版本可能地址不一样!!!)--》General Purpose Tools--》找到”Memory Analyzer“和”Memory Analyzer(Charts)“,并选取。安装完后重启eclipse.spa
2.提早修改配置:注意:因为后续分析过程须要大量内存,因此,后面打开分析后的文件时,可能会报内存溢出,须要调整eclipse内存,注意:网上不少都是骗人的,必须到eclipse目录下找到eclipse.ini在最后:-Xms2048m -Xmx2048m 这样既可,想动态看见eclipse运行内存:线程
3.编写内存泄漏测试代码code
大体是往ArrayList中循环添加大量字符串。这对20M的内存设置来讲确定是会溢出的。blog
1 @Test 2 public void testOutOfMemory(){ 3 List<String> list = new ArrayList<String>(); 4 for(int i=0;i<10000000;i++){ 5 String str = new String(); 6 list.add(str); 7 } 8 }
4.运行参数配置:Run as-->Run Configurations-->Arguments-->VM arguments:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError,配置20M当作内存溢出上限,方便测试,具体大小你们能够本身控制。-XX:+HeapDumpOnOutOfMemoryError 配置后,当存溢出就会生成文件。以下图:,测试代码运行后,控制台输出,见下图:
.ip
5.代码运行后,eclipse下刷新工程可见,生成了hprof文件,双击打开(注意,此处就是第二步设置参数的缘由)。默认选择第一项,finish便可。
,具体分析:
,上图可见,是主线程的ArrayList内存溢出了。内存