iT邦幫忙

0

[Java] Garbage Collection是什麼?

  • 分享至 

  • xImage
  •  

閱讀時間: 2分鐘

Garbage collection 就是指垃圾回收,在Java中是一個程式負責自動執行記憶體管理。利用Garbage collection可以找到沒有用的物件(Object)和刪除它們,從而釋放記憶體。
還有,這個Garbage collection只發生在Heap記憶體區間。

而觸動Garbage collection的機制就是當物件再沒有被參照(Reference),就表示那個物件已經沒有用途,所以可以重新分配它所佔用的記憶體。
如果沒有重新分配沒用的物件的記憶體,就會出現memory leak。最終導致系統的記憶體不足。

例子解釋:

public class GarbageCollectionExample {

	int results1;
	String results2;
	 
	//設置物件的內容
	  public void setData(int results3,String results4){
		results1=results3;
		results2=results4;
	  }
	//顯示物件的內容的方法
	  public void showData(){
	    System.out.println("Value of results1 = " + results1);
	    System.out.println("Value of results2 = " + results2);
	  }
	  
	  public static void main(String args[]){
		GarbageCollectionExample object1 = new GarbageCollectionExample(); //創建新物件叫object1
		GarbageCollectionExample object2 = new GarbageCollectionExample(); //創建新物件叫object2
		object1.setData(100,"A"); //設置物件的內容
		object2.setData(50,"B"); //設置物件的內容
		object1.showData(); //顯示物件的內容
	    object2.showData(); //顯示物件的內容
	    
	    GarbageCollectionExample object3; //創建新物件叫object3
	    
	    object3=object2; //將object2的reference 完完整整地copy去到 object3
	    object3.showData(); //顯示物件的內容 (會與object2一樣)
	    
	    object2=null; //把object2設為null,即移除所有reference
	    
	    object3.showData(); //顯示物件的內容
	    object3=null; //把object3設為null,即移除所有reference
	    
        object1.showData();
	    object3.showData(); //會出現錯誤許訊息
	  }

}

運用以上程式會出現的結果:
https://ithelp.ithome.com.tw/upload/images/20200831/20119569C8A4Ow8zf2.jpg

由於object3.showData();中的object3已經沒有任何reference,
只是null,不存在任何東西。
所以會出現"NullPointerException"。

另外,會留意到object1是不受影響的,
因為在整個過程中,沒有去修改object1的reference。
所以修改其他object的動作都不會影響object1。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言