代码之家  ›  专栏  ›  技术社区  ›  Artanis Zeratul

Java长时间运行的线程导致内存泄漏?

  •  2
  • Artanis Zeratul  · 技术社区  · 6 年前

    我一直在读这篇文章:

    因为我自己也有线程问题:

    这是否意味着Java中长时间运行的线程会造成内存泄漏? 如果我首先需要一个长时间运行的线程呢。 大多数应用程序长时间运行的线程不是也一样吗?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Mangat Rai Modi    6 年前

    长时间运行的线程不会造成内存泄漏。这是你在里面做的事。从技术上讲,当垃圾收集器无法收集可用空间时,会发生内存泄漏,因为该空间被标记为正在使用。i、 e.如果持有参考资料。

    现在,在一个长时间运行的线程中,可以在线程的生命周期中提供一个对象引用。这个东西本身可能很贵。这是中国的情况 first link 您已共享(threadlocal可传递地保存所有引用)

    在你的 second link ,问题似乎出在某个地方。如果我怀疑内存泄漏,我通常会这样做

    1. 使用jmap获取每个类实例的计数
    2. 再次计算每个类的实例,这些是GC无法清理的对象