zoukankan      html  css  js  c++  java
  • java中会存在内存泄漏吗

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

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

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

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

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

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

    扩展:Java存在内存泄漏吗? - 简书 (jianshu.com)

  • 相关阅读:
    C#实现图片的无损压缩
    C#实现图片的无损压缩
    ACM2034
    产品经理入门攻略(三)
    编程思想14.类型信息
    分布式ID生成策略 · fossi
    在加拿大找工作:如何写简历(适用理工科)
    支持向量机 SVM
    javaSE复习之——线程
    spring基于@Value绑定属Bean性失
  • 原文地址:https://www.cnblogs.com/peter-jun/p/15091560.html
Copyright © 2011-2022 走看看