基於java中stack與heap的區別,java中的垃圾回收機制的相關介紹

NO IMAGE

#. 在java中有兩類記憶體。分別稱為stack(堆疊)和heap(堆)。

stack是程式記憶體空間,因此所有的基本型別和物件的引用是存在stack中。

heap是java虛擬機器儲存物件的,它是一個巨大的記憶體,當你創造一個物件,java虛擬機器把物件放入heap中,把創造的物件的地址放入stack中。

因此,基本型別、物件的引用儲存在stack中;物件儲存在heap中。

#. java中的垃圾回收機制

當你new一個新的物件,java分配必需的記憶體。當你用完一個物件時,java的垃圾回收器為你把記憶體收回。

垃圾回收以執行緒的形式在後臺執行,尋找那些無有用引用(reference)的物件,發現之後便銷燬物件,並收回記憶體。

垃圾回收是在java虛擬機器間實現的,它們通常有相同的步驟,首先垃圾回收器獲得正在執行的執行緒和所有已經載入的類的快照,

然後所有執行緒中涉及到的物件被標記為最近使用的,當可能涉及的物件都被標記的時候,剩下沒標記的就被捨棄。

為了幫助虛擬機器,我們主動移除一些不在需要的物件是一個不錯的做法,可以通過將引用設定為null來實現。

eg:

Text t = new Test();

t.someAction();

//all done

t = null;

您可能感興趣的文章:

簡單介紹Java垃圾回收機制老生常談Java虛擬機器垃圾回收機制(必看篇)Java 垃圾回收機制詳解(動力節點Java學院整理)Java 垃圾回收機制詳解及例項程式碼Java檔案流關閉和垃圾回收機制深入理解Java垃圾回收機制以及記憶體洩漏簡單理解Java的垃圾回收機制與finalize方法的作用從JVM的記憶體管理角度分析Java的GC垃圾回收機制Java垃圾回收機制簡述