99插插插,亚洲伦理中文在线,站长推荐一二三区欧美,青青草在线导航

×

Java虛擬機堆棧

  • 作者:新網(wǎng)
  • 來源:新網(wǎng)
  • 瀏覽:100
  • 2018-05-15 14:33:53

棧(stack),位于通用RAM中,但通過它的“堆棧指針”可以從處理器哪里獲得支持。堆棧指針若向下移動,則分配新的內(nèi)存;若向上移動,則釋放那些內(nèi)存。存儲讀取速度,僅次于寄存器。存放基本類型數(shù)據(jù)變量和對象、數(shù)組等引用類型的引用!

   棧(stack),位于通用RAM中,但通過它的“堆棧指針”可以從處理器哪里獲得支持。堆棧指針若向下移動,則分配新的內(nèi)存;若向上移動,則釋放那些內(nèi)存。存儲讀取速度,僅次于寄存器。存放基本類型數(shù)據(jù)變量和對象、數(shù)組等引用類型的引用!

<div>  棧幀存儲了方法的局部變量表、操作數(shù)棧、動態(tài)連接和方法返回地址等信息。
20140320161534-618216595.jpg
  每一個方法從調(diào)用開始到執(zhí)行完成的過程,就對應著一個棧幀在虛擬機棧里面從入棧到出棧(也叫彈棧)的過程。
  對于棧,只有棧頂?shù)臈怯行У?,稱為當前棧幀,這個棧幀所關聯(lián)的方法稱為當前方法。執(zhí)行引擎所運行的所有字節(jié)碼指令都只針對當前棧幀進行操作。
  堆(heap),是一種通用性的內(nèi)存池(也存在于RAM中),用于存放所有的JAVA對象!
  各存儲空間就速度來說,有如下關系:寄存器 >堆棧 > 堆 > 其它。
  棧中的數(shù)據(jù)大小和生命周期是可以確定的,當沒有引用指向數(shù)據(jù)時,這個數(shù)據(jù)就會消失。堆中的對象的由垃圾回收器gc負責回收。
  結(jié)合實例:Student student=new Student();JVM在內(nèi)存中偷偷的做了什么?
  加載Student.class文件進入內(nèi)存
  在棧內(nèi)存中為student開辟空間,棧內(nèi)存中的局部變量表中存放student變量
  在堆內(nèi)存中為學生對象開辟空間
  學生對象的成員變量默認初始化(無參構造方法)
  學生對象的成員變量顯示初始化(有參構造方法)(若沒有就不執(zhí)行)
  通過構造代碼塊對學生對象進行初始化(若沒有就不執(zhí)行)
  通過構造方法對學生對象進行初始化(通過構造方法對學生對象的成員變量賦值)
  對象初始化完畢
  學生對象初始化完畢后,向外拋出產(chǎn)生的對象地址
  讓變量student指向?qū)W生對象。

免責聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,也不承認相關法律責任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)送郵件至:operations@xinnet.com進行舉報,并提供相關證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權內(nèi)容。

免費咨詢獲取折扣

Loading