Java虛擬機內(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ū)域。
<
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
虛擬機棧,每個方法被執(zhí)行時會創(chuàng)建一個棧幀用于存儲局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口等信息。每個方法被調(diào)用至返回的過程,,就對應(yīng)著一個棧幀在虛擬機棧中從入棧到出棧的過程。
本地方法棧,與Java Stack作用類似,區(qū)別是Java Stack為執(zhí)行Java方法服務(wù),而本地方法棧則為Native方法服務(wù)。
本文簡述了一下Java虛擬機的內(nèi)存模型的內(nèi)容,小編的分享就結(jié)束了。