aaaa成人_日本一道本在线视频_国产高潮流白浆喷水在线观看_韩国专区福利一区二区_一区二区不卡视频_看全色黄大色黄大片女图片第一次

×

深入理解Java虛擬機(jī)

  • 作者:新網(wǎng)
  • 來(lái)源:新網(wǎng)
  • 瀏覽:100
  • 2018-05-04 15:24:25

主要談?wù)撝疤岬紾C Roots如果通著這種方式尋找到所有存活于死亡的對(duì)象,常見的叫法是可達(dá)性分析法,但是因?yàn)楝F(xiàn)在應(yīng)用越來(lái)越大,要逐個(gè)檢查定位這些引用,耗費(fèi)的時(shí)間也會(huì)相對(duì)延長(zhǎng)。

   20130726165008-691170764.jpg

<div>  主要談?wù)撝疤岬紾C Roots如果通著這種方式尋找到所有存活于死亡的對(duì)象,常見的叫法是可達(dá)性分析法,但是因?yàn)楝F(xiàn)在應(yīng)用越來(lái)越大,要逐個(gè)檢查定位這些引用,耗費(fèi)的時(shí)間也會(huì)相對(duì)延長(zhǎng)。
  同時(shí),可達(dá)性分析在執(zhí)行時(shí),是需要將其他程序停掉的,因?yàn)檫@項(xiàng)分析工作必須在一個(gè)能確保一致性的快照中進(jìn)行——這里“一致性”的意思是指在整個(gè)分析期間整個(gè)執(zhí)行系統(tǒng)看起來(lái)就像被凍結(jié)在某個(gè)時(shí)間點(diǎn)上,不可以出現(xiàn)分析過程中對(duì)象引用關(guān)系還在不斷變化的情況,該點(diǎn)不滿足的話分析結(jié)果準(zhǔn)確性就無(wú)法得到保證。 這點(diǎn)是導(dǎo)致GC進(jìn)行時(shí)必須停頓所有Java執(zhí)行線程(Sun將這件事情稱為“Stop The World”)的其中一個(gè)重要原因,即使是在號(hào)稱(幾乎)不會(huì)發(fā)生停頓的CMS收集器中,枚舉根節(jié)點(diǎn)時(shí)也是必須要停頓的。
  目前的主流Java虛擬機(jī)使用的都是準(zhǔn)確式GC,所以當(dāng)執(zhí)行系統(tǒng)停頓下來(lái)后,并不需要一個(gè)不漏地檢查完所有執(zhí)行上下文和全局的引用位置,虛擬機(jī)應(yīng)當(dāng)是有辦法直接得知哪些地方存放著對(duì)象引用。 在HotSpot的實(shí)現(xiàn)中,是使用一組稱為OopMap的數(shù)據(jù)結(jié)構(gòu)來(lái)達(dá)到這個(gè)目的的,在類加載完成的時(shí)候,HotSpot就把對(duì)象內(nèi)什么偏移量上是什么類型的數(shù)據(jù)計(jì)算出來(lái),在JIT編譯過程中,也會(huì)在特定的位置記錄下棧和寄存器中哪些位置是引用。 這樣,GC在掃描時(shí)就可以直接得知這些信息了。
  安全點(diǎn)
  額外存放對(duì)象引用OopMap是需要分配內(nèi)存的,隨著對(duì)象的引用關(guān)系不斷復(fù)雜,內(nèi)存也變得越來(lái)越大,這樣的OopMap對(duì)于GC來(lái)說(shuō),提高的效率就不明顯了。所以,并不是每條指令都生成了OopMap,只是在“特定的位置”記錄了這些信息,這些位置稱為安全點(diǎn)(Safepoint),即程序執(zhí)行時(shí)并非在所有地方都能停頓下來(lái)開始GC,只有在到達(dá)安全點(diǎn)時(shí)才能暫停。 Safepoint的選定既不能太少以致于讓GC等待時(shí)間太長(zhǎng),也不能過于頻繁以致于過分增大運(yùn)行時(shí)的負(fù)荷。
  另一個(gè)需要考慮的問題是如何在GC發(fā)生時(shí)讓所有線程(這里不包括執(zhí)行JNI調(diào)用的線程)都“跑”到最近的安全點(diǎn)上再停頓下來(lái)。 這里有兩種方案可供選擇:搶先式中斷(Preemptive Suspension)和主動(dòng)式中斷(Voluntary Suspension),其中搶先式中斷不需要線程的執(zhí)行代碼主動(dòng)去配合,在GC發(fā)生時(shí),首先把所有線程全部中斷,如果發(fā)現(xiàn)有線程中斷的地方不在安全點(diǎn)上,就恢復(fù)線程,讓它“跑”到安全點(diǎn)上。 現(xiàn)在幾乎沒有虛擬機(jī)實(shí)現(xiàn)采用搶先式中斷來(lái)暫停線程從而響應(yīng)GC事件。
  主動(dòng)式中斷的思想是當(dāng)GC需要中斷線程的時(shí)候,不直接對(duì)線程操作,僅僅簡(jiǎn)單地設(shè)置一個(gè)標(biāo)志,各個(gè)線程執(zhí)行時(shí)主動(dòng)去輪詢這個(gè)標(biāo)志,發(fā)現(xiàn)中斷標(biāo)志為真時(shí)就自己中斷掛起。
  安全區(qū)域
  安全區(qū)域是擴(kuò)展了的安全點(diǎn),也就是整塊區(qū)域都是安全的,可以執(zhí)行GC,為什么要這么做,主要是考慮到執(zhí)行的程序在不太長(zhǎng)的時(shí)間就會(huì)遇到安全點(diǎn),進(jìn)入GC,但是程序不執(zhí)行是呢,比如遇到sleep,block狀態(tài),它就無(wú)法響應(yīng)JVN中斷。
  安全區(qū)域是指在一段代碼片段之中,引用關(guān)系不會(huì)發(fā)生變化。 在這個(gè)區(qū)域中的任意地方開始GC都是安全的。
  在線程執(zhí)行到Safe Region中的代碼時(shí),首先標(biāo)識(shí)自己已經(jīng)進(jìn)入了Safe Region,那樣,當(dāng)在這段時(shí)間里JVM要發(fā)起GC時(shí),就不用管標(biāo)識(shí)自己為Safe Region狀態(tài)的線程了。 在線程要離開Safe Region時(shí),它要檢查系統(tǒng)是否已經(jīng)完成了根節(jié)點(diǎn)枚舉(或者是整個(gè)GC過程),如果完成了,那線程就繼續(xù)執(zhí)行,否則它就必須等待直到收到可以安全離開Safe Region的信號(hào)為止。
  這節(jié)內(nèi)容相對(duì)枯燥,我也是看了好久,主要涉及的知識(shí)比較深,也是我們?cè)谄渌麜床坏降模【幠脕?lái)也是希望大家看后有一個(gè)概念,如果面試提起,或者你記住了,可以給自己加分的。
 

免責(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)容,請(qǐng)發(fā)送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

免費(fèi)咨詢獲取折扣

Loading
主站蜘蛛池模板: 精品无码中文字幕不卡 | 国产专区在线视频 | 午夜精品一区二区三区三上悠亚 | 宝宝好涨水快流出来免费视频 | 中文有码无码人妻在线 | 午夜视频在线看 | 视频网站高清免费在线观看 | 色婷婷五月综合亚洲影院 | 亚洲国产日韩A在线播放 | 在线网址91 | 国产熟妇乱子伦视频在线观看 | 国内视频精品 | 好久不见在线观看免费高清 | 阿公抱着我边摸边吃奶视频 | 91成人看片 | av高清| 在线播放中文 | 国产一区二区福利 | 亚洲乱码中文字幕小综合 | 成人av色| 波多野结衣在线视频一区二区三区 | 扒开未发育的小泬视频 | 国产下药迷晕一区二区三区在线看 | 日韩午夜视频免费 | 免费成人午夜视频 | 精品乱码卡1卡2卡3免费开放 | 免费观看添你到高潮视频 | 在线国产精品一区 | 99久热RE在线精品99RE6 | 国产精品亚洲午夜不卡 | 日韩精品区一区二区三vr | 亚洲精品尤物 | 丁香花在线观看免费观看 | 欧美激情黑白配 | 国产一区二区精品久久岳 | 精品精品国产高清a毛片 | 免费黄色网址在线观看 | 牲高潮99爽久久久久777 | 99久久免费看精品国产一区 | 五月色婷婷亚洲精品制服丝袜1区 | 国产亚洲第一伦理片在线c 啪啪网址大全 |