Whit非常简单的例子我想问你关于Java中的垃圾收集。我在一个arrayList中有很少的对象。在某些方面,我想从arrayList中删除一个对象,同时我想要销毁这个对象。这该怎么做? 请帮忙!
以下是示例:
class SomeClass{
public SomeClass()
{
}
}
public class Test
{
public static void main(String[] args) throws Throwable
{
SomeClass a = new SomeClass();
SomeClass b = new SomeClass();
ArrayList<SomeClass> arr = new ArrayList<SomeClass>();
arr.add(a);
arr.add(b);
//this doesn't work
SomeClass tmp = arr.remove(0);
tmp = null;
/* I want to do something like this. I want to remove the object from arrayList
and at the same time to clean this object. Something like this:
arr.remove(0) = null;
*/
System.out.println(a);
}
}
答案 0 :(得分:1)
Java是垃圾收集语言,我们不需要或者可以手动释放内存。取消引用对象后,GC下次运行时将标记或扫描该对象。您无法手动销毁对象,只能取消引用它。
如果在销毁对象之前需要挂钩,则可以覆盖finalize
方法。
@Override protected void finalize() throws Throwable {
// clean up logic
}
答案 1 :(得分:0)
Java以异步方式运行GC。因此,尽管您没有引用该对象,但只有在GC的下一次迭代中才会从堆中删除对象。
答案 2 :(得分:0)
如果你没有使用这个对象,那么无需做任何事情垃圾收集器会照顾它。它会自动消灭。