日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JVM內(nèi)存區(qū)域劃分的原理是什么

jvm工作原理是什么?

JVM中的內(nèi)存分為五個(gè)部分:

(1)方法區(qū):存儲(chǔ)加載的class字節(jié)碼,通過該區(qū)域我們能尋址到類中的方法的入口。除此之外,方法區(qū)還包括運(yùn)行時(shí)常量區(qū)和靜態(tài)常量區(qū)。這個(gè)區(qū)域是所有線程共享的。

(2)堆:存儲(chǔ)new出來的對(duì)象,垃圾回收器主要監(jiān)控和回收的就是這塊區(qū)域。在堆里面不斷創(chuàng)建對(duì)象但是垃圾回收器不回收,就有可能造成OutOfMemoryError錯(cuò)誤。這個(gè)區(qū)域也是線程共享的。

(3)虛擬機(jī)棧:存儲(chǔ)所有被調(diào)用的java方法的上下文。在main方法里面調(diào)用test方法,則在虛擬機(jī)棧里面push進(jìn)test方法上下文,調(diào)用完畢,則pop出test方法的上下文。倘若在main方法里面遞歸調(diào)用main方法,則虛擬機(jī)棧則會(huì)被消耗光資源,造成StackOverflowError錯(cuò)誤。這個(gè)區(qū)域是線程隔離的,也就是說每個(gè)線程都有一個(gè)虛擬機(jī)棧。

(4)本地方法棧:本地方法棧與虛擬機(jī)棧類似,只不過本地方法棧中存儲(chǔ)所有被調(diào)用的本地native方法的上下文。這個(gè)區(qū)域也是線程隔離的。

(5)程序計(jì)數(shù)器:存儲(chǔ)著CPU下一條指令的地址,也就是說記錄著現(xiàn)在程序執(zhí)行到了哪里,執(zhí)行到了那條語句,哪個(gè)指令。這個(gè)區(qū)域也是線程隔離的。

jvm同時(shí)啟動(dòng)兩個(gè)進(jìn)程會(huì)有兩個(gè)堆嘛?

JVM同時(shí)啟動(dòng)兩個(gè)進(jìn)程會(huì)有兩個(gè)堆。每個(gè)進(jìn)程都會(huì)有自己的JVM實(shí)例,每個(gè)JVM實(shí)例都會(huì)有自己的堆。堆是JVM中的一個(gè)內(nèi)存區(qū)域,用于存儲(chǔ)運(yùn)行時(shí)創(chuàng)建的對(duì)象。每個(gè)JVM實(shí)例都會(huì)有自己的堆,這是因?yàn)槊總€(gè)進(jìn)程都會(huì)獨(dú)立運(yùn)行,互相之間不會(huì)共享內(nèi)存。因此,兩個(gè)JVM實(shí)例啟動(dòng)時(shí),就會(huì)有兩個(gè)獨(dú)立的堆。這樣可以保證進(jìn)程之間的數(shù)據(jù)獨(dú)立性,避免相互干擾。

是的,一般來說,每個(gè)進(jìn)程是擁有自己獨(dú)立的存儲(chǔ)空間,那怕它們是同一個(gè)程序的多次執(zhí)行。 但其實(shí)每個(gè)進(jìn)程所占用的空間其實(shí)包含了代碼段,數(shù)據(jù)段,堆棧段等。這些用途不同的存儲(chǔ)空間是可以分別進(jìn)行管理的,這也是段式內(nèi)存管理的一個(gè)重要目標(biāo)。

這直接導(dǎo)致了不同的進(jìn)程間可以擁有不同的數(shù)據(jù)內(nèi)容(比如寫字板里不同的文本),但它們可以共用一個(gè)代碼段,因?yàn)檫@一部分不會(huì)因?yàn)檫\(yùn)算的數(shù)據(jù)不同而有任何變化。 其實(shí)在Windows里,dll動(dòng)態(tài)鏈接庫也是這個(gè)思想,一些函數(shù)功能和它的代碼部分,甚至在程序執(zhí)行時(shí)并不裝入內(nèi)存,只有當(dāng)程序運(yùn)行到需要調(diào)用他們時(shí)才會(huì)被動(dòng)態(tài)的真正裝入內(nèi)存,同時(shí)只裝入內(nèi)存一次,如果再有其它程序也需要調(diào)用這個(gè)dll,那么它們會(huì)共享這部分代碼段,從而能有效的提高內(nèi)存的使用,減少浪費(fèi)。

尤其是很多操作系統(tǒng)的底層調(diào)用,比如用于處理圖形界面的顯示等功能就可能被所有的圖形界面程序用到,這時(shí)就可以大大提高內(nèi)存的利用率。

方法區(qū)與永久區(qū)的區(qū)別?

方法區(qū)(Method Area)是jvm規(guī)范里面的運(yùn)行時(shí)數(shù)據(jù)區(qū)的一個(gè)組成部分,jvm規(guī)范中的運(yùn)行時(shí)數(shù)據(jù)區(qū)還包含了:pc寄存器、虛擬機(jī)棧、堆、方法區(qū)、運(yùn)行時(shí)常量池、本地方法棧

永久區(qū)也就是永久帶,又叫Perm區(qū),只存在于hotspot jvm中,并且只存在于jdk7和之前的版本中,jdk8中已經(jīng)徹底移除了永久帶,jdk8中引入了一個(gè)新的內(nèi)存區(qū)域叫metaspace

到此,以上就是小編對(duì)于談?wù)刯vm內(nèi)存區(qū)域的劃分的問題就介紹到這了,希望這3點(diǎn)解答對(duì)大家有用。


網(wǎng)站標(biāo)題:JVM內(nèi)存區(qū)域劃分的原理是什么
網(wǎng)站URL:http://www.5511xx.com/article/ccdgggi.html