java中会存在内存泄漏吗

Posted camile123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中会存在内存泄漏吗相关的知识,希望对你有一定的参考价值。

  内存泄漏是指不再被使用的对象或者变量一直被占据在内存中。但是java中有垃圾回收机制,它能够将不再被使用的对象,自动从内存中清除。

即使这样,java中也存在着内存泄漏的情况:

  一:当长生命周期的对象持有短生命周期的对象的引用,就很可能发生内存泄漏。尽管短生命周期的对象已经不再需要,但是长生命周期的对象一直持有它的引用导致其无法被回收。例如,缓存系统;加载一个对象放在缓存系统中,一直不去使用这个对象,但是它一直被缓存引用,所以不会被回收导致缓存泄漏。

检查java中的内存泄漏,一定要将程序各个分支情况都完成执行至结束,然后看其是否被使用过,如果没有才能判定这个对象属于内存泄漏。

  二:当一个对象被存储进HashSet集合中,就不可修改这个对象中用于计算哈希值的属性了。否则,对象修改后的哈希值与刚添加进HashSet集合时的哈希值不一样,此时如果将当前对象的引用作为参数,用contains方法判断对象是否存在,则会返回找不到对象的结果。这会导致无法从HashSet单独删除当前对象,造成内存泄漏

 

参考地址:http://www.cnblogs.com/guweiwei/p/6641762.html

以上是关于java中会存在内存泄漏吗的主要内容,如果未能解决你的问题,请参考以下文章

如何防止java中的内存泄漏

闭包会造成内存泄漏吗?

这是java内存泄漏吗

基本的内存泄漏的解释

Java 内存不足。这不是内存泄漏吗?

java 内存泄露问题