国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)

wuyangnju / 1126人閱讀

摘要:虛擬機(jī)執(zhí)行程序時(shí),會(huì)把虛擬機(jī)管理的內(nèi)存劃分成不同的區(qū)域,用于處理程序運(yùn)行過(guò)程中不同的數(shù)據(jù)。各個(gè)線程之間的程序計(jì)數(shù)器互不影響,獨(dú)立存儲(chǔ)。虛擬機(jī)棧線程私有每個(gè)方法在執(zhí)行時(shí)都會(huì)創(chuàng)建一個(gè)棧幀。

Java虛擬機(jī)執(zhí)行Java程序時(shí),會(huì)把虛擬機(jī)管理的內(nèi)存劃分成不同的區(qū)域,用于處理程序運(yùn)行過(guò)程中不同的數(shù)據(jù)。

程序計(jì)數(shù)器 線程私有

對(duì)于一個(gè)處理器,只會(huì)執(zhí)行一個(gè)線程的指令。線程并不是一直獨(dú)享CPU的,多個(gè)線程通過(guò)切換的方式,實(shí)現(xiàn)一段時(shí)間內(nèi)的同時(shí)執(zhí)行。因此,為了線程切換后能恢復(fù)到切換前的執(zhí)行位置,每個(gè)線程都需要有個(gè)獨(dú)立的空間來(lái)記錄執(zhí)行位置,即程序計(jì)數(shù)器。各個(gè)線程之間的程序計(jì)數(shù)器互不影響,獨(dú)立存儲(chǔ)。

內(nèi)存空間小

程序計(jì)數(shù)器中存儲(chǔ)的為當(dāng)前線程執(zhí)行的指令:

如果當(dāng)前執(zhí)行的是Java方法,程序計(jì)數(shù)器記錄的是正在執(zhí)行的虛擬機(jī)字節(jié)碼指令地址

如果執(zhí)行的是Native方法,程序計(jì)數(shù)器記錄的值為空

沒(méi)有OutOfMemoryError情況

唯一在虛擬機(jī)規(guī)范中沒(méi)有規(guī)定任何OutOfMemoryError情況的區(qū)域。

虛擬機(jī)棧 線程私有

每個(gè)方法在執(zhí)行時(shí)都會(huì)創(chuàng)建一個(gè)棧幀。棧幀存儲(chǔ)了局部變量表、操作數(shù)棧、動(dòng)態(tài)鏈接、方法出口等信息。方法從調(diào)用到執(zhí)行完成對(duì)應(yīng)了棧幀在虛擬機(jī)棧的入棧到出站過(guò)程。

StackOverflowError異常

棧是有深度(大小)的,當(dāng)線程請(qǐng)求的棧深度大于了虛擬機(jī)允許的深度,則throw StackOverflowError。

OutOfMemoryError異常

如果虛擬機(jī)棧可動(dòng)態(tài)擴(kuò)展,當(dāng)無(wú)法申請(qǐng)到足夠的內(nèi)存,則throw OutOfMemoryError。

堆是Java人員經(jīng)常提及的一塊內(nèi)存區(qū)域,也是關(guān)注最多的一塊區(qū)域。堆具有一下特點(diǎn):

通常是虛擬機(jī)管理的最大的一塊區(qū)域

被所有線程共享

垃圾收集器管理的主要區(qū)域

OutOfMemoryError異常

從內(nèi)存回收的角度來(lái)看,Java對(duì)可以分為新生代和老年代。

方法區(qū)

方法區(qū)是所有線程共享的內(nèi)存區(qū)域,用來(lái)存儲(chǔ)已經(jīng)被虛擬機(jī)加載的類信息、常量、靜態(tài)變量、即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。方法區(qū)無(wú)法滿足內(nèi)存分配需求時(shí),也會(huì)拋出OutOfMemoryError異常。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/69021.html

相關(guān)文章

  • 對(duì)于JVM,你就只知道堆和棧嗎?

    摘要:下面的截圖內(nèi)容來(lái)自從規(guī)范我們可以看到,規(guī)范要求的運(yùn)行時(shí)數(shù)據(jù)區(qū)域有程序計(jì)數(shù)器虛擬機(jī)棧堆方法區(qū)本地方法棧運(yùn)行時(shí)常量池這及部分。查了一下,還是沒(méi)有查到官方對(duì)于運(yùn)行時(shí)數(shù)據(jù)區(qū)域的說(shuō)明,但是許多博客都指出將字符串常量池移動(dòng)到了堆中。 不少java程序員一提JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)域,就會(huì)說(shuō)堆和棧,當(dāng)然也有java程序員給出方法區(qū)、虛擬機(jī)棧、本地方法棧、堆、程序計(jì)數(shù)器這個(gè)答案,但是還有人給出永久代、虛擬機(jī)...

    王笑朝 評(píng)論0 收藏0
  • 【譯】JVM框架說(shuō)明

    摘要:框架說(shuō)明開(kāi)發(fā)者都知道會(huì)執(zhí)行字節(jié)碼。但是可能大多數(shù)人都不知道一個(gè)事實(shí)是的實(shí)現(xiàn),它分析字節(jié)碼,解釋并執(zhí)行代碼。執(zhí)行引擎字節(jié)碼加載到運(yùn)行時(shí)數(shù)據(jù)區(qū)后,會(huì)被執(zhí)行引擎執(zhí)行。解釋器更快的解釋字節(jié)碼,但是執(zhí)行非常慢。垃圾收集收集并移除不再被使用的對(duì)象。 JVM框架說(shuō)明 java開(kāi)發(fā)者都知道JRE(Java Runtime Environment)會(huì)執(zhí)行字節(jié)碼。但是可能大多數(shù)人都不知道一個(gè)事實(shí):JRE是...

    tracymac7 評(píng)論0 收藏0
  • 一文了解JVM

    摘要:而使用虛擬機(jī)是實(shí)現(xiàn)這一特點(diǎn)的關(guān)鍵。每個(gè)字節(jié)碼指令都由一個(gè)字節(jié)的操作碼和附加的操作數(shù)組成。字節(jié)碼可以通過(guò)以下兩種方式轉(zhuǎn)換成合適的語(yǔ)言解釋器一條一條地讀取,解釋并執(zhí)行字節(jié)碼執(zhí)行,所以它可以很快地解釋字節(jié)碼,但是執(zhí)行起來(lái)會(huì)比較慢。 一、什么是JVM JVM是Java Virtual Machine(Java 虛擬機(jī))的縮寫,JVM是一種用于計(jì)算設(shè)備的規(guī)范,它是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī),是通過(guò)在實(shí)...

    whatsns 評(píng)論0 收藏0
  • Java GC

    摘要:對(duì)字節(jié)碼文件進(jìn)行解釋執(zhí)行,把字節(jié)碼翻譯成相關(guān)平臺(tái)上的機(jī)器指令。使用命令可對(duì)字節(jié)碼文件以及配置文件進(jìn)行打包可對(duì)一個(gè)由多個(gè)字節(jié)碼文件和配置文件等資源文件構(gòu)成的項(xiàng)目進(jìn)行打包。和不存在永久代這種說(shuō)法。 Java技術(shù)體系 從廣義上講,Clojure、JRuby、Groovy等運(yùn)行于Java虛擬機(jī)上的語(yǔ)言及其相關(guān)的程序都屬于Java技術(shù)體系中的一員。如果僅從傳統(tǒng)意義上來(lái)看,Sun官方所定義的Jav...

    justCoding 評(píng)論0 收藏0
  • 萬(wàn)萬(wàn)沒(méi)想到,JVM內(nèi)存結(jié)構(gòu)的面試題可以問(wèn)的這么難?

    摘要:方法區(qū)在實(shí)際內(nèi)存空間站可以是不連續(xù)的。這一規(guī)定,可以說(shuō)是給了虛擬機(jī)廠商很大的自由。但是值得注意的是,堆其實(shí)還未每一個(gè)線程單獨(dú)分配了一塊空間,這部分空間在分配時(shí)是線程獨(dú)享的,在使用時(shí)是線程共享的。 在我的博客中,之前有很多文章介紹過(guò)JVM內(nèi)存結(jié)構(gòu),相信很多看多我文章的朋友對(duì)這部分知識(shí)都有一定的了解了。 那么,請(qǐng)大家嘗試著回答一下以下問(wèn)題: 1、JVM管理的內(nèi)存結(jié)構(gòu)是怎樣的? 2、不同的...

    CloudwiseAPM 評(píng)論0 收藏0
  • Java程序員:不識(shí)Jvm真面目,只緣身在增刪查改中

    摘要:編譯器只需面向,生成能理解的代碼或字節(jié)碼文件。源文件經(jīng)編譯器,編譯成字節(jié)碼程序,通過(guò)將每一條指令翻譯成不同平臺(tái)機(jī)器碼,通過(guò)特定平臺(tái)運(yùn)行。漲見(jiàn)識(shí),字節(jié)碼執(zhí)行過(guò)程分析。解決辦法減少默認(rèn)棧的容量來(lái)?yè)Q取更多的線程支持。 前言 JVM是java的核心和基礎(chǔ),在java編譯器和os平臺(tái)之間的虛擬處理器。它是一種基于下層的操作系統(tǒng)和硬件平臺(tái)并利用軟件方法來(lái)實(shí)現(xiàn)的抽象的計(jì)算機(jī),可以在上面執(zhí)行java的...

    or0fun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<