Java垃圾回收器在访问路径被破坏时如何处理循环引用?
答
有一组被认为总是可以访问的“根对象”:例如,线程引用,静态变量,类引用。如果某些对象无法通过这些根对象的引用链接到达,则认为它可用于GC,即使对该对象有一些引用。
答
GC算法的细节依赖于Java的实现,因此它取决于您的VM。但大多数虚拟机不使用引用计数。官方虚拟机甚至有几种可配置的算法可用。所以这很难概括。
答
GarbageCollector基于Java内存模型工作。在java中可用的应用程序内存分为两部分:堆栈和堆栈。一个对象存储在堆内存中,可以通过两种方式访问: - 对象可以具有存储在堆栈内存中的引用变量。在这种情况下,可以通过使用它的引用变量直接访问对象。
2)对象可以由任何其他对象被包含,并且不会有在堆栈存储器中的任何引用。在这种情况下,只能使用该容器对象访问此对象。所以如果容器对象是垃圾回收,那么这个对象必须符合垃圾回收的条件。
虽然做垃圾回收GarbageCollector检查一个对象是否是在栈提供任何引用直接或间接访问的,如果是,那么它不会收集这些对象否则做收集。