第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

求教,jvm中線程本地內(nèi)存是真實(shí)存在的,還是一個(gè)抽象概念?

求教,jvm中線程本地內(nèi)存是真實(shí)存在的,還是一個(gè)抽象概念?

藍(lán)山帝景 2019-11-12 14:10:08
jvm中線程本地內(nèi)存是真實(shí)存在的,還是一個(gè)抽象概念
查看完整描述

3 回答

?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊

是一個(gè)抽象的概念,并不是真實(shí)存在的,涵蓋了緩存、寫緩沖區(qū)、寄存器以及其他的硬件和編譯器優(yōu)化,每一個(gè)線程都有一個(gè)本地內(nèi)存,其中有主內(nèi)存中對象的拷貝值,

查看完整回答
反對 回復(fù) 2019-11-16
?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊

jvm內(nèi)存模型:Java代碼是運(yùn)行在Java虛擬機(jī)之上的,由Java虛擬機(jī)通過解釋執(zhí)行(解釋器)或編譯執(zhí)行(即時(shí)編譯器)來完成,故Java內(nèi)存模型,也就是指Java虛擬機(jī)的運(yùn)行時(shí)內(nèi)存模型。

運(yùn)行時(shí)內(nèi)存模型,分為線程私有和共享數(shù)據(jù)區(qū)兩大類,其中線程私有的數(shù)據(jù)區(qū)包含程序計(jì)數(shù)器、虛擬機(jī)棧、本地方法區(qū),所有線程共享的數(shù)據(jù)區(qū)包含Java堆、方法區(qū),在方法區(qū)內(nèi)有一個(gè)常量池。java運(yùn)行時(shí)的內(nèi)存模型圖,如下:

從圖中,可知內(nèi)存分為線程私有和共享兩大類:

(1)線程私有區(qū),包含以下3類:
程序計(jì)數(shù)器,記錄正在執(zhí)行的虛擬機(jī)字節(jié)碼的地址;
虛擬機(jī)棧:方法執(zhí)行的內(nèi)存區(qū),每個(gè)方法執(zhí)行時(shí)會(huì)在虛擬機(jī)棧中創(chuàng)建棧幀;
本地方法棧:虛擬機(jī)的Native方法執(zhí)行的內(nèi)存區(qū);

(2)線程共享區(qū),包含以下2類
Java堆:對象分配內(nèi)存的區(qū)域;
方法區(qū):存放類信息、常量、靜態(tài)變量、編譯器編譯后的代碼等數(shù)據(jù);
常量池:存放編譯器生成的各種字面量和符號引用,是方法區(qū)的一部分。

樓主提到的Java棧,一般而言是指圖中的虛擬機(jī)棧,在代碼中的方法調(diào)用過程中,往往需要從一個(gè)方法跳轉(zhuǎn)到另一個(gè)方法,執(zhí)行完再返回,那么在跳轉(zhuǎn)之前需要在當(dāng)前方法的基本信息壓入棧中保存再跳轉(zhuǎn)。

三、關(guān)于寄存器的問題

對于java最常用的虛擬機(jī),sun公司提供的hotspot虛擬機(jī),是基于棧的虛擬機(jī);而對于android的虛擬機(jī),則采用google提供的dalvik,art兩種虛擬機(jī),在android 5.0以后便默認(rèn)采用art虛擬機(jī),這是基于寄存器的虛擬機(jī)。 樓主問的是jvm(即java vm),這是基于棧的虛擬機(jī)。那么關(guān)于虛擬機(jī)棧,這塊內(nèi)存的內(nèi)容,我們再進(jìn)一步詳細(xì)分析,如下圖:

可以看到,在虛擬機(jī)棧有一幀幀的 棧幀組成,而棧幀包含局部變量表,操作棧等子項(xiàng),那么線程在運(yùn)行的時(shí)候,代碼在運(yùn)行時(shí),是通過程序計(jì)數(shù)器不斷執(zhí)行下一條指令。真正指令運(yùn)算等操作時(shí)通過控制操作棧的操作數(shù)入棧和出棧,將操作數(shù)在局部變量表和操作棧之間轉(zhuǎn)移。

查看完整回答
反對 回復(fù) 2019-11-16
?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊

我看過的理論好像是
堆的話,好像是全局一個(gè),所有 用new生成的對象,都保存在堆里。
但是 按照這種理論,我也有點(diǎn)不懂的地方。 以垃圾回收的理論來看的話,最好的方法是 一個(gè)棧對應(yīng)一個(gè)堆,然后方法棧執(zhí)行完畢,清空這一個(gè)堆,垃圾回收舊算完了。這樣的方式 感覺比單純一個(gè)全局的堆 要好。

全局一個(gè)堆的話, 要維護(hù) 每個(gè)線程對應(yīng)的 內(nèi)存對象,垃圾回收 還得針對每一個(gè)線程,感覺有點(diǎn)復(fù)雜。
全局的堆 肯定是有一個(gè)的,維護(hù)那些 靜態(tài)變量的 內(nèi)存,公有的一些對象。
其實(shí)我也不怎么懂 jvm里面 具體的內(nèi)存分配策略。 可是是錯(cuò)的

查看完整回答
反對 回復(fù) 2019-11-16
  • 3 回答
  • 0 關(guān)注
  • 1206 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號