关于Java的内存泄露
2013-09-21 23:33
218 查看
Java 也是有内存泄露的,虽然Java有著名的GC( 垃圾回收机制),由于Java是通过程序来分配内存空间,释放则交给GC, 由于程序编写不当,仍然会引起内存泄露。
Java中的内存泄露的情况:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景。例如在Application中保存一个对象,这个对象其实没有使用了,但是由于一直被引用,造成不能回收。
内存泄露的情况是:一个外部类的实例对象的方法返回了一个内部类的实例对象,这个内部类对象被长期引用了,即使那个外部类实例对象不再被使用,但由于内部类持久外部类的实例对象,这个外部类对象将不会被垃圾回收。
内存泄露的另外一种情况:当一个对象被存储进HashSet集合中以后,就不能修改这个对象中的那些参与计算哈希值的字段了,否则,对象修改后的哈希值与最初存储进HashSet集合中时的哈希值就不同了,这也会导致无法从HashSet集合中单独删除当前对象,造成内存泄露
IBM技术论坛相关:http://www.ibm.com/developerworks/cn/java/l-JavaMemoryLeak/index.html
Java中的内存泄露的情况:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景。例如在Application中保存一个对象,这个对象其实没有使用了,但是由于一直被引用,造成不能回收。
内存泄露的情况是:一个外部类的实例对象的方法返回了一个内部类的实例对象,这个内部类对象被长期引用了,即使那个外部类实例对象不再被使用,但由于内部类持久外部类的实例对象,这个外部类对象将不会被垃圾回收。
内存泄露的另外一种情况:当一个对象被存储进HashSet集合中以后,就不能修改这个对象中的那些参与计算哈希值的字段了,否则,对象修改后的哈希值与最初存储进HashSet集合中时的哈希值就不同了,这也会导致无法从HashSet集合中单独删除当前对象,造成内存泄露
IBM技术论坛相关:http://www.ibm.com/developerworks/cn/java/l-JavaMemoryLeak/index.html
相关文章推荐
- 关于java递归调用内存泄露
- 关于java处理内存泄露与内存溢出的学习总结
- 关于Java内存泄露的问题
- 关于java 内存泄露的有用的文章
- 关于Java内存泄露的问题
- 几个关于Java内存泄露方面的问题
- 关于java内存泄露
- 关于java的内存泄露
- 关于Java的内存泄露
- 关于java处理内存泄露与内存溢出的学习总结
- 关于java内存泄露的总结--引用的类型:强引用,弱引用,软引用
- 几个关于Java内存泄露方面的面试题
- 关于java内存泄露2--内存泄露示例
- 关于java的内存泄露
- 关于java递归调用内存泄露
- 关于java内存泄露
- 转一篇有关Java的内存泄露的文章(受益哦)
- java基础之面试篇三---int,float,long,double取值范围,内存泄露
- JAVA内存泄露、溢出的检查方法、工具介绍
- 关于js内存泄露的一个好例子