成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JVM學(xué)習(xí)-Java內(nèi)存區(qū)域職責(zé)(1)

xiaochao / 1667人閱讀

摘要:此內(nèi)存區(qū)域是唯一一個在虛擬機(jī)規(guī)范中沒有規(guī)定任何情況的區(qū)域。其中位長度的和類型的數(shù)據(jù)會占用個局部變量空間,其余數(shù)據(jù)類型只占用個。內(nèi)存區(qū)域異常線程請求棧深度大于虛擬機(jī)允許的深度,將拋出。上限控制異常直接內(nèi)存

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

程序計數(shù)器

線程正在執(zhí)行時,如果執(zhí)行的是一個Java方法,則這個計數(shù)器記錄的是正在執(zhí)行的虛擬機(jī)字節(jié)碼指令的地址。
如果執(zhí)行的是Native方法,則這個計數(shù)器值為空(Undefined)。此內(nèi)存區(qū)域是唯一一個在Java虛擬機(jī)規(guī)范中沒有規(guī)定任何OutOfMemoryError情況的區(qū)域。

Java虛擬機(jī)棧

每個方法在執(zhí)行時,都會創(chuàng)建一個棧幀用于存儲局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口等信息。
局部變量表存放了編譯期克制的各種基本數(shù)據(jù)類型(boolean、bytechar、short、int、floatlong、double)、對象引用和returnAddress類型。
其中64位長度的longdouble類型的數(shù)據(jù)會占用2個局部變量空間(Slot),其余數(shù)據(jù)類型只占用1個。
局部變量表所需的內(nèi)存空間在在編譯期間完成分配,當(dāng)進(jìn)入一個方法時,這個方法需要的在幀中分配多大的局部變量空間是完全確定的,在運(yùn)行期間不會改變局部變量表的大小。

內(nèi)存區(qū)域異常:
StackOverflowError:線程請求棧深度大于虛擬機(jī)允許的深度,將拋出。
OutOfMemoryError:虛擬機(jī)棧動態(tài)擴(kuò)展時,如果無法申請到足夠的內(nèi)存,將拋出。

本地方法棧

本地方法棧與虛擬機(jī)棧作用類似,只不過虛擬機(jī)棧是為Java方法(也就是字節(jié)碼)服務(wù),而本地方法棧是為了Native服務(wù)。

本地方法棧區(qū)域也會拋出StackOverflowError、OutOfMemoryError異常。

Java堆

Java堆是Java虛擬機(jī)所管理的內(nèi)存中最大的一塊,是被線程共享的一塊內(nèi)存區(qū)域,在虛擬機(jī)啟動時創(chuàng)建。此內(nèi)存區(qū)域唯一目的就是存放對象實(shí)例,幾乎所有的對象實(shí)例都在這里分配內(nèi)存。
Java堆是垃圾收集器管理的主要區(qū)域,也稱Gc堆,Java堆可以處于物理上不連續(xù)的內(nèi)存空間中,只要邏輯上是連續(xù)的即可。

可通過-Xmx-Xms 控制
異常:OutOfMemoryError:堆內(nèi)存無法滿足實(shí)例分配,并且無法擴(kuò)展時,將會拋出。

方法區(qū)

方法區(qū)和Java堆一樣,是各個線程共享的內(nèi)存區(qū)域,它用于存儲已被虛擬機(jī)加載的類信息常量、靜態(tài)變量、即時編譯器編譯后的代碼等數(shù)據(jù)。
運(yùn)行時常量池是方法區(qū)的一部分。
Class文件中除了有類的版本字段、方法、接口等描述信息外,還有一項(xiàng)信息是常量池,用于存放編譯期生成的各種字面量和符號引用,這部分內(nèi)容將在類加載后進(jìn)入方法區(qū)的運(yùn)行時常量池中存放。

-XX:MaxPermSize 上限控制
異常:OutOfMemoryError

直接內(nèi)存

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75032.html

相關(guān)文章

  • Java性能優(yōu)化之JVM內(nèi)存模型

    摘要:內(nèi)存模型首先介紹下程序具體執(zhí)行的過程源代碼文件后綴會被編譯器編譯為字節(jié)碼文件后綴由中的類加載器加載各個類的字節(jié)碼文件,加載完畢之后,交由執(zhí)行引擎執(zhí)行在整個程序執(zhí)行過程中,會用一段空間來存儲程序執(zhí)行期間需要用到的數(shù)據(jù)和相關(guān)信息,這段空間一般被 [TOC] JVM內(nèi)存模型 首先介紹下Java程序具體執(zhí)行的過程: Java源代碼文件(.java后綴)會被Java編譯器編譯為字節(jié)碼文件(....

    SQC 評論0 收藏0
  • Java程序員工作3年,薪資為何會被應(yīng)屆生倒掛?

    摘要:同時也會關(guān)注市場上同崗位薪資,以便對企業(yè)內(nèi)部薪資結(jié)構(gòu)做出相應(yīng)調(diào)整。一般來說,相同崗位和職責(zé)的員工,薪資低于市場不超過,都屬于合理范疇,因?yàn)橐粋€員工不會為了的薪酬而跳槽。同時,還能激勵員工自我提升,以獲得相應(yīng)技能市場所給予的報酬。 各位職場人都聽說過薪資倒掛這詞兒吧,這個情況在行業(yè)內(nèi)早就不是什...

    szysky 評論0 收藏0
  • 《深入理解java虛擬機(jī)》學(xué)習(xí)筆記系列——java內(nèi)存區(qū)域劃分

    摘要:運(yùn)行時數(shù)據(jù)區(qū)域的學(xué)習(xí),是學(xué)習(xí)以及機(jī)制的基礎(chǔ),也是深入理解對象創(chuàng)建及運(yùn)行過程的前提。了解內(nèi)存區(qū)域劃分,是學(xué)習(xí)概念的前提。 Java 運(yùn)行時數(shù)據(jù)區(qū)域的學(xué)習(xí),是學(xué)習(xí) jvm 以及 GC 機(jī)制的基礎(chǔ),也是深入理解 java 對象創(chuàng)建及運(yùn)行過程的前提。廢話不多說,直接進(jìn)入正題: 一張圖總結(jié) showImg(https://segmentfault.com/img/bVOMAn?w=685&h=5...

    史占廣 評論0 收藏0
  • JVM 探究(一):JVM內(nèi)存模型概念模型

    摘要:作為一個程序員,不了解內(nèi)存模型就不能寫出能夠充分利用內(nèi)存的代碼。程序計數(shù)器是在電腦處理器中的一個寄存器,用來指示電腦下一步要運(yùn)行的指令序列。在虛擬機(jī)中,本地方法棧和虛擬機(jī)棧是共用同一塊內(nèi)存的,不做具體區(qū)分。 作為一個 Java 程序員,不了解 Java 內(nèi)存模型就不能寫出能夠充分利用內(nèi)存的代碼。本文通過對 Java 內(nèi)存模型的介紹,讓讀者能夠了解 Java 的內(nèi)存的分配情況,適合 Ja...

    cnTomato 評論0 收藏0
  • jvm基礎(chǔ)篇一之內(nèi)存區(qū)域

    摘要:堆區(qū)堆是虛擬機(jī)所管理的內(nèi)存中最大的一塊,它是被所有線程共享的一塊內(nèi)存區(qū)域,該區(qū)域在虛擬機(jī)啟動的時候創(chuàng)建。 運(yùn)行時數(shù)據(jù)區(qū)域 ? ?想要了解jvm,那對其內(nèi)存分配管理的學(xué)習(xí)是必不可少的;java虛擬機(jī)在執(zhí)行java程序的時候會把它所管理的內(nèi)存劃分成若干數(shù)據(jù)區(qū)域。這些區(qū)域有著不同的功能、用途、創(chuàng)建/銷毀時間。java虛擬機(jī)所分配管理的內(nèi)存區(qū)域如圖1所示 程序計數(shù)器 ? ?程序計數(shù)器是一塊比較...

    Zachary 評論0 收藏0

發(fā)表評論

0條評論

xiaochao

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<