网上文档很多,但最初都有问题。整理一份,作为备份。使用过程:开发代码写完后,对可能出现内存溢出的代码,添加配置文件,生成.hprof文件,用memory Analyzer分析排查问题,且泄漏内存大小可配置。具体安装测试一条龙如下:

1.安装:

help-》install new software -》work with :  这里填写eclipse版本:  Kepler - http://download.eclipse.org/releases/kepler(注意这里不同版本可能地址不同!!!)--》General Purpose Tools--》找到”Memory Analyzer“和”Memory Analyzer(Charts)“,并选取。安装完后重启eclipse.

2.提前修改配置:注意:由于后续分析过程需要大量内存,所以,后面打开分析后的文件时,可能会报内存溢出,需要调整eclipse内存,注意:网上很多都是骗人的,必须到eclipse目录下找到eclipse.ini在最后:-Xms2048m -Xmx2048m 这样既可,想动态看见eclipse运行内存:

3.编写内存泄漏测试代码

大致是往ArrayList中循环添加大量字符串。这对20M的内存设置来说肯定是会溢出的。

     @Test
public void testOutOfMemory(){
List<String> list = new ArrayList<String>();
for(int i=0;i<10000000;i++){
String str = new String();
list.add(str);
}
}

4.运行参数配置:Run as-->Run Configurations-->Arguments-->VM arguments:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError,配置20M当做内存溢出上限,方便测试,具体大小大家可以自己控制。-XX:+HeapDumpOnOutOfMemoryError 配置后,当存溢出就会生成文件。如下图:,测试代码运行后,控制台输出,见下图:.

5.代码运行后,eclipse下刷新工程可见,生成了hprof文件,双击打开(注意,此处就是第二步设置参数的原因)。默认选择第一项,finish即可。,具体分析:,上图可见,是主线程的ArrayList内存溢出了。

最新文章

  1. .net 面试基础题
  2. App开发流程之加密工具类
  3. 淘宝(阿里百川)手机客户端开发日记第十三篇 mysql的连接
  4. DC/DC与LDO的差别
  5. Delphi 2010错误 "displayNotification: 内存不够"
  6. oracle处理考勤时间,拆分考勤时间段的sql语句
  7. [BS-19]更改UITextField的placeholder文字颜色的5种方法
  8. docker 中搭建tomcat
  9. clas
  10. jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
  11. php5.5 + apache2.4 安装配置
  12. JVM--常见的虚拟机回收算法
  13. 关于本地化(localization)
  14. Android完全退出应用的方法
  15. 本地浏览器Websql数据库操作
  16. 031、none和host网络的适用场景(2019-02-18 周一)
  17. Safari 中加载 Flash 使用overflow失效的bug
  18. github总结(1)--怎样创建一个新的仓库
  19. 获取当前操作系统的ip
  20. 声明式API replica controller vs replica set 对比

热门文章

  1. 洛谷 P1967 货车运输 Label: 倍增LCA &amp;&amp; 最小瓶颈路
  2. 【BZOJ】2697: 特技飞行
  3. This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes. This will cause an exception in a future release.
  4. centos 7 搭建本地yum仓库
  5. 用css画出三角形【转】
  6. window下 配置gitlab ssh非端口22端口
  7. DataGridView 中添加CheckBox和常用处理方式 .
  8. C# 非模式窗体show()和模式窗体showdialog()的区别(转)
  9. js判断图片加载完成后获取图片实际宽高
  10. iOS性能优化:Instruments使用实战