麻豆成人91精品二区三区,国产91在线播放,加勒比无码专区中文字幕,欧美黑人XXXX高潮猛交

×

深入理解Java虛擬機(jī) - Java內(nèi)存區(qū)域

  • 作者:
  • 來源:
  • 瀏覽:100
  • 2018-05-04 15:15:29

Java虛擬機(jī)在執(zhí)行Java程序的過程中會(huì)把它所管理的內(nèi)存劃分為若干個(gè)不同的數(shù)據(jù)區(qū)域。 這些區(qū)域都有各自的用途,以及創(chuàng)建和銷毀的時(shí)間,有的區(qū)域隨著虛擬機(jī)進(jìn)程的啟動(dòng)而存在,有些區(qū)域則依賴用戶線程的啟動(dòng)和結(jié)束而建立和銷毀。

   t01996f7a68eec06529.jpg

<div>Java虛擬機(jī)在執(zhí)行Java程序的過程中會(huì)把它所管理的內(nèi)存劃分為若干個(gè)不同的數(shù)據(jù)區(qū)域。 這些區(qū)域都有各自的用途,以及創(chuàng)建和銷毀的時(shí)間,有的區(qū)域隨著虛擬機(jī)進(jìn)程的啟動(dòng)而存在,有些區(qū)域則依賴用戶線程的啟動(dòng)和結(jié)束而建立和銷毀。 
  程序計(jì)數(shù)器
  程序計(jì)數(shù)器:是一塊較小的內(nèi)存空間,它可以看作是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號(hào)指示器。每個(gè)線程都有自己的獨(dú)立的程序計(jì)數(shù)器。如果線程正在執(zhí)行的是Java方法,那么這個(gè)計(jì)數(shù)器的值就是正在執(zhí)行的虛擬機(jī)字節(jié)碼指令的地址;如果正在執(zhí)行的是Native方法,這個(gè)計(jì)數(shù)器值為空(undefined)。此內(nèi)存區(qū)域是唯一一個(gè)在Java虛擬機(jī)規(guī)范中沒有規(guī)定任何OutOfMemoryError情況的區(qū)域。
  Java虛擬機(jī)棧
  線程私有的,它的生命周期與線程相同。虛擬機(jī)棧描述的是Java方法執(zhí)行的內(nèi)存模型:每個(gè)方法執(zhí)行的同時(shí)都會(huì)創(chuàng)建一個(gè)棧幀用于存儲(chǔ)局部變量表、操作數(shù)棧、動(dòng)態(tài)鏈接、方法出口等信息。局部變量表存放了編譯期可知的各種基本數(shù)據(jù)類型(boolean、byte、char、short、int、float、long、double)、對(duì)象引用和returnAddress類型(指向了一條字節(jié)碼指令的地址)。其中64位長(zhǎng)度的long和double類型的數(shù)據(jù)會(huì)占用2個(gè)局部變量空間(slot),其余的數(shù)據(jù)類型占1個(gè)。局部變量表所需的內(nèi)存空間在編譯期間分配完成,當(dāng)進(jìn)入一個(gè)方法時(shí),這個(gè)方法需要在幀中分配多大的局部變量空間是完全確定的,在方法運(yùn)行期間不會(huì)改變局部變量表的大小。如果線程請(qǐng)求棧的深度大于虛擬機(jī)所允許的深度,將拋出StackOverflowError異常;無法申請(qǐng)到內(nèi)存拋出OutOfMemoryError異常。
  本地方法棧
  本地方法棧與虛擬機(jī)棧所發(fā)揮的作用是非常相似的,它們之間的區(qū)別不過是虛擬機(jī)棧為虛擬機(jī)執(zhí)行java方法,而本地棧則為虛擬機(jī)使用到的Native方法服務(wù)。
  Java堆
  Java堆是線程共享的,在虛擬機(jī)啟動(dòng)時(shí)創(chuàng)建。此區(qū)域的唯一目的就是存放對(duì)象實(shí)例,幾乎所有的對(duì)象實(shí)例都在這里分配內(nèi)存。Java堆是垃圾收集器管理的主要區(qū)域,因此很多時(shí)候也被稱作“GC堆”。由于現(xiàn)在收集器基本都采用分代收集算法,所以Java堆中還可以細(xì)分為:新生代和老年代;再細(xì)致一點(diǎn)的有Eden空間、From Survivor空間、To Survivor空間等。在實(shí)現(xiàn)時(shí),既可以實(shí)現(xiàn)成固定大小的,也可以是可擴(kuò)展的,不過當(dāng)前主流的虛擬機(jī)都是按照可擴(kuò)展來實(shí)現(xiàn)的(通過-Xmx和-Xms控制)。
  方法區(qū)(永久代)
  線程共享,用于存儲(chǔ)已被虛擬機(jī)加載的類信息、常量、靜態(tài)變量、即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。這區(qū)域的內(nèi)存回收目標(biāo)主要是針對(duì)常量池的回收和對(duì)類型的卸載!
  運(yùn)行時(shí)常量池
  他是方法區(qū)的一部分,Class文件中除了有類的版本、字段、方法、接口等描述信息外,還有一項(xiàng)信息就是常量池,用于存放編譯期生成的各種字面量和符號(hào)引用,這部分內(nèi)容將在類加載后進(jìn)入方法區(qū)的運(yùn)行時(shí)常量池中存放。
  直接內(nèi)存
直接內(nèi)存不是虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)的一部分。但是這部分內(nèi)存也被頻繁地使用,而且也可能導(dǎo)致OutOfMemoryError異常出現(xiàn)。在JDK1.4中新加入了NIO類,引入了一種基于通道與緩存區(qū)(buffer)的I/O方式,它可以使用Native函數(shù)庫(kù)直接分配堆外內(nèi)存,然后通過一個(gè)存儲(chǔ)在Java堆中的DirectByteBuffer對(duì)象作為這塊內(nèi)存的引用進(jìn)行操作。這樣能在一些場(chǎng)景中顯著提高性能,因?yàn)楸苊饬嗽贘ava堆和Native堆中來回復(fù)制數(shù)據(jù)。
以上就是Java內(nèi)存區(qū)域的全部介紹。
 

免責(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
精品久久久久久777米琪桃花 | 日韓人妻淑女| 日女人逼视频| 成人免费无码不卡毛片| 久久特黄A级免费视频| 婷婷色综合网| 四虎影视观看| 日韩久久小说| 91美女国产视频| 久久久免费无码成人影片| 日韩欧美中文字| 国产AV一区亚洲av| 男男暴菊GAY无套网站| 久久AV资源| 国产一区二区好粗好爽| 欧美一区二区三区久久| 美女一区二区国产精品| 国产精品久久久久久久7电影| www.激情五月| 丝袜人妻在线无码| 一区二区无码视频| 精品少妇久久久| 伊人丁香在线| 精品无码国产污污污免费| 成人精品免费| 中文字幕产自拍尤物| 无码一级毛片一区| 啪啪啪免费网站| 韩国三级中文字幕HD| 性感jk自慰喷水| 久一人妻| 亚洲黄区在线看| h小说在线| 50岁熟妇大白屁股真爽| 夜夜夜精品视频| 精品88彳久| 人妻系列无码专区按摩好紧| 日日爱999| 人人爽人人干| 日韩欧美黄色| 香蕉视频小说专区|