×

Java虛擬機(jī)內(nèi)存模型簡述

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

我們經(jīng)常在命令行啟動的時候指定了堆內(nèi)存的大小,用于分配和存儲絕大部分的對象實例.是VM管理的最大一塊內(nèi)存, 也是垃圾收集器的主要活動區(qū)域。

   我們經(jīng)常在命令行啟動的時候指定了堆內(nèi)存的大小,用于分配和存儲絕大部分的對象實例.是VM管理的最大一塊內(nèi)存, 也是垃圾收集器的主要活動區(qū)域。

0b5f82a822e5c75af81279e3c400f493.jpg

<div>  程序中的大多數(shù)可回收的內(nèi)存可歸為兩類:大部分對象很快就不再使用、還有一部分不會立即無用但也不會持續(xù)(太)長時間。
  這些觀測形成了弱代假設(shè)基于這一假設(shè), VM中的內(nèi)存被分為年輕代和老年代老年代有時候也稱為年老區(qū)。拆分為這樣兩個可清理的單獨區(qū)域允許采用不同的算法來大幅提高GC的性能。
  橫坐標(biāo)可理解為對象的存活時間.大部分對象分配完不就就被回收了。有一些要存活很久垃圾回收會導(dǎo)致應(yīng)用程序停頓對于不同存活時間的對象在垃圾回收區(qū)別對待從而進(jìn)行各種優(yōu)化來減少這種停頓,是分代內(nèi)存結(jié)構(gòu)設(shè)計的初衷。
  線程私有域,它生命周期與線程相同,依賴用戶線程的啟動/結(jié)束而創(chuàng)建/銷毀。
  程序計數(shù)器一塊較小的內(nèi)存空間,作用是當(dāng)前線程所執(zhí)行字節(jié)碼的行號指示器(類似于傳統(tǒng)CPU模型中的PC),PC在每次指令執(zhí)行后自增,維護(hù)下一個將要執(zhí)行指令的地址。
        Java 虛擬機(jī)棧,每個方法被執(zhí)行時會創(chuàng)建一個棧幀用于存儲局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口等信息。每個方法被調(diào)用至返回的過程,,就對應(yīng)著一個棧幀在虛擬機(jī)棧中從入棧到出棧的過程。
  本地方法棧,與Java Stack作用類似,區(qū)別是Java Stack為執(zhí)行Java方法服務(wù),而本地方法棧則為Native方法服務(wù)。
  本文簡述了一下Java虛擬機(jī)的內(nèi)存模型的內(nèi)容,小編的分享就結(jié)束了。

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

免費咨詢獲取折扣

Loading