如何破坏对象本身

时间:2011-07-20 19:26:23

标签: java object

是否有任何破坏当前对象实例的解决方案?

我正在寻找看起来像的东西:

class KillMe {
    ....
    public void destroy() {
        this.getObject = null //this is only for demonstrate my idea
    }

    ....
}

4 个答案:

答案 0 :(得分:19)

Java对象一直存在,直到不再引用它们为止。由于对象无法确定自身有多少引用,因此对象不能“自我毁灭”。

答案 1 :(得分:4)

对象无法访问对它的引用,因此无法将它们设置为null或其他内容。只有当垃圾收集器出现并清除所有未引用的对象时,才能“销毁”对象。

话虽如此,试试这个:

public void destroy() {
    System.exit( 0 );
}

答案 2 :(得分:1)

不,对象不能自杀。任何自己的引用都只是一个参考。

要清除自身内的对象,只需清除所有实例变量即可。

要“清除”自身之外的对象,可以将变量设置为null。

答案 3 :(得分:0)

您想要做的示例表明,对于如何/何时销毁/清理对象缺乏了解。

class KillMe {
    ....
    public void destroy() {
        this.getObject = null //this is only for demonstrate my idea
    }
}

你在那里的调用(this.getObject)获取对当前对象的引用,然后将该引用设置为null(即,不再指向当前对象。它对该对象没有任何作用本身,也不会改变恰好指向对象的代码中的其他变量。

以这种方式考虑......变量指向值(对象)。在没有更多变量指向给定值之前,该值保持不变(不是垃圾收集/销毁)。为了删除对值的所有变量引用,您需要找到指向它的所有变量并将它们指向其他位置(ex,null)。实际上,你不能这样做(虽然我认为没有什么是不可能的,有足够的可怕反射和/或字节码魔术;)

以另一种方式来思考,如果你能够破坏值/对象本身,那么当前指向它的所有其他变量会发生什么?他们现在是否指向释放内存,导致某些Java版本的段错误?