在java中,垃圾意味著未參照的物件。
垃圾收集是自動回收執行時未使用記憶體的過程。 換句話說,它是一種銷毀未使用物件的方法。
它類似於,在C語言中使用free()
函式,在C++中使用delete()
。 但是,在java中這些會自動執行。因此,java提供了更好的記憶體管理。
有以下幾個方法:
Employee e=new Employee();
e=null;
Employee e1=new Employee();
Employee e2=new Employee();
e1=e2;//now the first object referred by e1 is available for garbage collection
new Employee();
finalize()方法
每次在物件被垃圾回收之前呼叫finalize()
方法。 此方法可用於執行清理處理。 此方法在Object
類中定義為:
protected void finalize(){}
注意 :JVM的垃圾收集器僅收集由
new
關鍵字建立的物件。 因此,如果建立了沒有new
的任何物件,則可以使用finalize
方法執行清理處理(銷毀剩餘物件)。
gc()方法gc()
方法用於呼叫垃圾收集器以執行清理處理。 gc()
可在System
和Runtime
類中找到。
public static void gc(){}
注意 :垃圾收集由稱為垃圾收集器(GC)的守護程式執行緒執行。 此物件在物件被垃圾回收之前呼叫
finalize()
方法。
public class TestGarbage1{
public void finalize(){System.out.println("object is garbage collected");}
public static void main(String args[]){
TestGarbage1 s1=new TestGarbage1();
TestGarbage1 s2=new TestGarbage1();
s1=null;
s2=null;
System.gc();
}
}
執行上面範例程式碼,得到以下結果:
object is garbage collected
object is garbage collected
注意 :無論是最終確定還是垃圾收集都不能保證。