如何在Java中清理和销毁对象

时间:2018-03-06 06:32:33

标签: java

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);
    }

}

3 个答案:

答案 0 :(得分:1)

Java是垃圾收集语言,我们不需要或者可以手动释放内存。取消引用对象后,GC下次运行时将标记或扫描该对象。您无法手动销毁对象,只能取消引用它。

如果在销毁对象之前需要挂钩,则可以覆盖finalize方法。

@Override protected void finalize() throws Throwable {
   // clean up logic
}

答案 1 :(得分:0)

Java以异步方式运行GC。因此,尽管您没有引用该对象,但只有在GC的下一次迭代中才会从堆中删除对象。

答案 2 :(得分:0)

如果你没有使用这个对象,那么无需做任何事情垃圾收集器会照顾它。它会自动消灭。