在Java中,对象何时变得无法访问?

2022-09-02 03:35:20

在Java中,什么是无法访问的对象?对象何时变得不可访问?在研究垃圾收集时,我无法理解这个概念。

任何人都可以用例子给出任何想法吗?


答案 1

当不再有任何参考变量引用它时,或者当它在孤岛中时。

岛是具有指向它的参考变量的对象,但是该对象没有指向它的参考变量。

class A { int i = 5; }
class B { A a = new A(); }
class C {
   B b;
   public static void main(String args[]) {
      C c = new C();
      c.b = new B();
      // instance of A, B, and C created
      c.b = null;
      // instance of B and A eligible to be garbage collected.
   }

编辑:只是想指出,即使A的实例有引用,它现在也在岛上,因为B的实例没有引用它。A 实例符合垃圾回收条件。


答案 2

当没有更多对对象的引用时,或者这些引用本身来自不可爬设的对象,则该对象是不可回切的。

Integer i = new Integer(4);
// the new Integer object is reachable  via the reference in 'i' 
i = null;
// the Integer object is no longer reachable.