2019独角兽企业重金招聘Python工程师标准>>>

大家先运行下下面这段代码,看看结果

public class MemoryLeak {public static void main(String[] args) throws InterruptedException {new Thread(new Runnable() {@Overridepublic void run() {for (int i = 0; i < 2000; i++) {User user1 = new User();User user2 = new User();        user1.str =user2.str.subList(0, 1);//1、user1中的原str已经不可达,会被GC//2、思考user2中str的其他元素 是否会被回收?    users.add(user1);}System.gc();}}).start();Thread.sleep(3000);//让线程先运行while (true) {System.gc();Thread.sleep(3000);}}public static List<User> users = new ArrayList();public static class User {public List<String> str = new ArrayList() {{for (int i = 0; i < 10000; i++)add(String.valueOf(i));}};}
}

先分析下原因为什么OOM,然后再把

这段代码
user1.str =user2.str.subList(0, 1)换成下面这段代码,
user1.str = new ArrayList<String>() {{ add("1"); }}; //同样user1里面的str 是一个元素 “1”

然后再看看结果~~

原理和JDK1.6的String.subString 的BUG 一样!~~~

注:版权所有转载请注明出处http://my.oschina.net/u/926166/blog/538921

转载于:https://my.oschina.net/ij5IYLKW/blog/538921

ArrayList的内存泄露相关推荐

  1. Java String.substring内存泄露?

    2019独角兽企业重金招聘Python工程师标准>>> String可以说是最常用的Java类型之一了,但是最近听说JDK6里面String.substring存在内存泄露的bug, ...

  2. Classloader内存泄露

    2019独角兽企业重金招聘Python工程师标准>>> 最近遇到了这个问题,在修改了-Xmx后有时仍然会出现,下文分析的很有启发,看了下文重新分析我的应用,在项目中我使用了sprin ...

  3. ​Java 中的内存溢出和内存泄露是什么?我给你举个有味道的例子​

    作者 l 会点代码的大叔(CodeDaShu) JAVA中的内存溢出和内存泄露分别是什么,有什么联系和区别,让我们来看一看. 01 内存泄漏 & 内存溢出 1. 内存泄漏(memory lea ...

  4. 彻底搞懂Java内存泄露

    Java内存回收方式 Java判断对象是否可以回收使用的而是可达性分析算法. 在主流的商用程序语言中(Java和C#),都是使用可达性分析算法判断对象是否存活的.这个算法的基本思路就是通过一系列名为& ...

  5. 【内存泄露】Memory Leaks 内存优化

    什么是内存泄露 内存管理一直是Java 所鼓吹的强大优点.开发者只需要简单地创建对象,而Java的垃圾收集器将会自动管理内存空间的分配和释放. 但在很多情况下,事情并不那么简单,在 Java程序中总是 ...

  6. Android开发笔记——常见BUG类型之内存泄露与线程安全

    一.内存泄露 1.很抱歉,"XXX"已停止运行.OOM? 怎样才能让app报OOM呢?最简单的办法如下: Bitmap bt1 = BitmapFactory.decodeReso ...

  7. Android开发过程中内存泄露检测

    转自 http://blog.csdn.net/shimiso/article/details/44677041 一.内存泄露 内存泄漏会因为减少可用内存的数量从而降低计算机的性能.最终,在最糟糕的情 ...

  8. Java内存溢出和内存泄露后怎么解决

    1.首先这里先说一下内存溢出和内存泄露的区别: 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory:比如申请了一个integer,但 ...

  9. connection timed out是什么意思_Java 中的内存溢出和内存泄露是什么?我给你举个有味道的例子...

    作者 l 会点代码的大叔(CodeDaShu) JAVA中的内存溢出和内存泄露分别是什么,有什么联系和区别,让我们来看一看. 01 内存泄漏 & 内存溢出 1. 内存泄漏(memory lea ...

最新文章

  1. newinsets用法java_Java XYPlot.setInsets方法代碼示例
  2. 自定义windows下自动清除文件夹或者文件的只读属性的脚本
  3. 【数理知识】《数值分析》李庆扬老师-第9章-常微分方程初值问题数值解法
  4. 2、运行.py文件、字符串、保留字符、行和缩进、多行语句、引号、注释、等待用户输入、同一行显示多条语句、命令行参数
  5. 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
  6. Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析
  7. 字体单独设置样式_Glyphs 官方教程 | 字体命名
  8. UNIX标准化及实现之UNIX标准化、UNIX系统实现、标准和实现的关系以及ISO C标准头文件...
  9. Android开发 GradientDrawable详解
  10. weblogic详解
  11. CentOS 7.6 配置VNC远程访问服务器图形界面
  12. 什么是5W1H分析法?
  13. 腾讯微博android版本,腾讯微博
  14. 采集CSI数据的实验
  15. 权限系统就该这么设计(万能通用),稳的一批!
  16. 如何高效的学习高等数学
  17. 嵌入式系统硬件设计与实践(学习方法)
  18. ege函数库_ege图形库基本说明
  19. 2018年——幻灭 2019年——重启
  20. eSpace VTM Solution在金融信贷领域的应用开发

热门文章

  1. 移植 thttpd Web服务器
  2. int、bigint、smallint 和 tinyint
  3. linux在多核处理器上的负载均衡原理
  4. DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子2
  5. OpenCV支持中文字符输出实现
  6. 【Qt】QTest:编译Qt单元测试程序
  7. java 抓屏_java抓屏代码
  8. python 执行vba脚本_用python批量执行VBA代码
  9. python打包为exe文件_Pyinstaller(python打包为exe文件)
  10. bpython ipython_安装ipython后命令找不到ipython bpython -bash: *python: command not found