程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 基於java中stack與heap的區別,java中的垃圾回收機制的相關介紹

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

編輯:JAVA編程入門知識

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved