【发布时间】:2018-12-12 10:10:34
【问题描述】:
我一直在阅读这篇文章:
因为我自己有线程问题:
这是否意味着 Java 中长时间运行的线程会造成内存泄漏? 如果我首先需要一个长时间运行的线程怎么办。 大多数应用程序不也是长时间运行的线程吗?
【问题讨论】:
-
长时间运行的线程本身不一定是问题。如果您将它与第一个链接中的其他点结合起来,那就是一个问题。
标签: java multithreading
我一直在阅读这篇文章:
因为我自己有线程问题:
这是否意味着 Java 中长时间运行的线程会造成内存泄漏? 如果我首先需要一个长时间运行的线程怎么办。 大多数应用程序不也是长时间运行的线程吗?
【问题讨论】:
标签: java multithreading
长时间运行的线程不会造成内存泄漏。这就是你在里面做的事情。从技术上讲,当垃圾收集器无法收集可用空间时,就会发生内存泄漏,因为该空间被标记为正在使用。即如果引用被持有。
现在在一个长时间运行的线程中,您可以在线程的整个生命周期内都存在一个对象引用。这个对象本身可能很昂贵。在你共享的first link 中就是这种情况(threadlocal 传递地持有所有引用)
在您的second link 上,问题似乎出在某个地方。如果我怀疑内存泄漏,我通常会这样做
重复多次,你会注意到一些应该被清除的对象。这会给你一些想法。按照代码中的这些引用,您可以得到一些想法。
【讨论】: