Java中的垃圾收集器和内存泄漏

时间:2018-06-19 22:09:24

标签: java memory-leaks

C/C++中遇到一些内存泄漏后,我想知道Java中是否存在内存泄漏。快速搜索将我带到以下stackoverflow thread

@ david-wasser对这个线程的评论是:

  

ObjectA-> ObjectB

     

在此示例中,ObjectA是代码中活跃使用的对象。   但是,ObjectA包含对ObjectB的引用,该引用有效   已失效(即:ObjectB已从   程序员的观点,死了),但是程序员忘记设置   ObjectA中对null的引用。在这种情况下,ObjectB已被“泄漏”。

我不太明白为什么垃圾收集器不能解决这个问题?垃圾收集器的工作不是解决这类memory leaks吗?

此外,我想看看一个实现该想法的基本示例。

P.S我宁愿为此开一个新话题,而不是在6岁的剧院里发表评论。

1 个答案:

答案 0 :(得分:0)

GC仅收集不再从程序中引用的对象,因为objectA中对objectB的引用未设置为null,因此它永远都不适用于GC。

GC永远不会知道objectB是不是一个抓取对象,因为代码会一直保留对该对象的引用。