是否有任何破坏当前对象实例的解决方案?
我正在寻找看起来像的东西:
class KillMe {
....
public void destroy() {
this.getObject = null //this is only for demonstrate my idea
}
....
}
答案 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版本的段错误?