A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王雷1 中级黑马   /  2013-11-24 08:48  /  878 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王雷1 于 2013-11-24 09:44 编辑

长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,像这样的问题应该如何避免?

点评

FFF
同学,短时间内(几分钟内)不要一次性发太多的问题哦。不然有刷分的嫌疑是没有分的呢~!  发表于 2013-11-24 09:41

2 个回复

倒序浏览
集合类,集合类仅仅有添加元素的方法,而没有相应的删除机制,导致内存被占用。这一点其实也不明确,这个集合类如果仅仅是局部变量,根本不会造成内存泄露,在方法栈退出后就没有引用了会被jvm正常回收。而如果这个集合类是全局性的变量(比如类中的静态属性,全局性的map等),那么没有相应的删除机制,很可能导致集合所占用的内存只增不减,因此提供这样的删除机制或者定期清除策略非常必要。

单例模式。不正确使用单例模式是引起内存泄露的一个常见问题,单例对象在被初始化后将在JVM的整个生命周期中存在(以静态变量的方式),如果单例对象持有外部对象的引用,那么这个外部对象将不能被jvm正常回收,导致内存泄露。
我扒的,然后就是其实可以找度娘来解决。。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 如果带上例子就更好了!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马