#. 在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;