一尘不染

Java中的循环引用

java

给定一个以复杂的,循环的方式相互引用的类实例的集合:垃圾收集器是否可能无法释放这些对象?

我隐约记得过去这是JVM中的问题,但我 认为 这在几年前已解决。但是,在jhat中进行的一些调查显示,循环引用是我现在面临的内存泄漏的原因。

注意:我一直给人以JVM能够解析循环引用并从内存中释放这种“垃圾岛”的印象。 但是,我提出这个问题只是为了看看是否有人发现了任何异常。


阅读 1024

收藏
2020-09-08

共1个答案

一尘不染

循环引用只有一个非常幼稚的实现。维基百科上有一篇关于不同GC算法的好文章。如果您真的想了解更多信息,请尝试(Amazon)垃圾收集:自动动态内存管理算法。从1.2开始,Java就拥有了一个不错的垃圾收集器,而在1.5和Java
6中,Java有了一个非常好的垃圾收集器。

改善GC的难点在于减少暂停和开销,而不是诸如循环引用之类的基本操作。

2020-09-08