Garbage Collection垃圾回收機制
在C#中,Reference Type的資料會存放在Heap,這樣子如果一直建立物件,就會讓Heap的記憶體空間裡面東西愈積愈多,那這樣子不清理的話就會使用愈來愈多的記憶體,這樣最後有可能會導致記憶體不足,如果是C++會需要呼叫free()來自己清理資料,而C#可以不要這麼做,因為C#會自動清理,不需要自己手動清理。
在C#中就好像會有清潔隊在固定時間就會把沒有用的垃圾給清理乾淨,如果Heap裡面有記憶體區塊都已經沒有再使用了,就會去刪除這些區塊釋放出記憶體,會檢查這些建立的區塊有沒有指向物件,如果有指向物件的話,那麼就不會刪掉,但如果都沒有指向物件,那就會刪掉。在C#程式的這個機制叫做Garbage Collection垃圾回收機制,有這個機制就不用自己手動來刪除這些資料了。
Heap是一種記憶體區間,想了解Heap是甚麼的人,可以看下面這篇文章:
Garbage Collection在程式設計中實際可以不必學會也還是可以寫程式,現在至少先有這個觀念,以後再學比較進階的會有所幫助,在C#中其中還是有強制回收的方法,讓程式釋放出記憶體,今天因為只有講觀念,所以先不提程式怎麼寫。Garbage Collection是C#的程式語言中和C++程式語言一個很大的不同,如果面試時有人問你C++和C#哪裡不同,就可以回答Garbage Collection,了解這個觀念多少還是有幫助。
全站熱搜
留言列表