在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" ); } } |
输出:
输出说明:
- 在销毁一个对象之前,垃圾收集器最多对该对象调用一次finalize方法。这是因为在上面的示例中finalize()方法被调用了两次,这是因为两个对象符合垃圾收集的条件。这是因为在执行t2=null之后,我们没有对t1和t2对象的任何外部引用。
- 我们只有相互之间的内部引用(在类Test的实例变量i中)。我们无法调用这两个对象的实例变量。因此,直到 ‘ t2。i=t1 ‘
- 这两个对象都有外部参照t1和t2。
- t1=null: 这两个物体都可以通过t2到达。分别为i和t2。
- t2=null: 无法到达任何物体。
现在,这两个对象都符合垃圾收集的条件 我们不可能给他们打电话 .这通常被称为 孤岛。
本文由 高拉夫·米格拉尼 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END