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