爪哇岛的隔离

在Java中,对象销毁由 垃圾收集器 模块和没有任何引用的对象都有资格进行垃圾收集。垃圾收集器能够识别这种类型的对象。现在让我们讨论一下隔离岛的确切含义如下:

null
  • 对象1引用对象2,对象2引用对象1。对象1和对象2均未被任何其他对象引用。那是一座孤岛。
  • 基本上,隔离岛是一组相互引用但未被应用程序中任何活动对象引用的对象。严格地说,即使是一个未引用的对象也是一个孤立的孤岛。

例子:

JAVA

// Java Program to Illustrate Island of Isolation
// Main class
public class GFG {
GFG i;
// Method 1
// Main driver method
public static void main(String[] args)
{
// Creating object of class inside main() method
GFG t1 = new GFG();
GFG t2 = new GFG();
// Object of t1 gets a copy of t2
t1.i = t2;
// Object of t2 gets a copy of t1
t2.i = t1;
// Till now no object eligible
// for garbage collection
t1 = null ;
// Now two objects are eligible for
// garbage collection
t2 = null ;
// Calling garbage collector
System.gc();
}
// Method 2
// overriding finalize() Method
@Override protected void finalize() throws Throwable
{
// Print statement
System.out.println( "Finalize method called" );
}
}


输出:

图片[1]-爪哇岛的隔离-yiteyi-C++库

输出说明:

  • 在销毁一个对象之前,垃圾收集器最多对该对象调用一次finalize方法。这是因为在上面的示例中finalize()方法被调用了两次,这是因为两个对象符合垃圾收集的条件。这是因为在执行t2=null之后,我们没有对t1和t2对象的任何外部引用。
  • 我们只有相互之间的内部引用(在类Test的实例变量i中)。我们无法调用这两个对象的实例变量。因此,直到 t2。i=t1

图片[2]-爪哇岛的隔离-yiteyi-C++库

  • 这两个对象都有外部参照t1和t2。
  • t1=null: 这两个物体都可以通过t2到达。分别为i和t2。
  • t2=null: 无法到达任何物体。

现在,这两个对象都符合垃圾收集的条件 我们不可能给他们打电话 .这通常被称为 孤岛。

本文由 高拉夫·米格拉尼 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享