3 回答
TA贡献1793条经验 获得超6个赞
您应该通过分配null或将其保留在声明该块的位置来删除对其的引用。之后,它将被垃圾收集器自动删除(不是立即删除,而是最终删除)。
范例1:
Object a = new Object();
a = null; // after this, if there is no reference to the object,
// it will be deleted by the garbage collector
范例2:
if (something) {
Object o = new Object();
} // as you leave the block, the reference is deleted.
// Later on, the garbage collector will delete the object itself.
仅供参考:您可以通过调用System.gc()来调用垃圾收集器
TA贡献1835条经验 获得超7个赞
您的C ++正在显示。
deleteJava 中没有,所有对象都在堆上创建。JVM具有依赖引用计数的垃圾收集器。
一旦不再有对对象的引用,该对象就可以由垃圾收集器进行收集。
myObject = null可能不会这样做;例如:
Foo myObject = new Foo(); // 1 reference
Foo myOtherObject = myObject; // 2 references
myObject = null; // 1 reference
所有这些操作都将引用设置myObject为null,它只myObject对引用计数减1 不会影响曾经指向的myOtherObject对象,因为仍然引用该对象,因此尚无法收集该对象。
TA贡献1845条经验 获得超8个赞
如果要帮助对象消失,请将其引用设置为null。
String x = "sadfasdfasd";
// do stuff
x = null;
将引用设置为null将使该对象更有可能被垃圾回收,只要没有对该对象的其他引用即可。
添加回答
举报