麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

JVM運(yùn)行數(shù)據(jù)環(huán)境

2019-11-10 20:13:38
字體:
供稿:網(wǎng)友

JVM(java virual machine)Java虛擬機(jī)是Java語言的基礎(chǔ),雖然名稱叫做java虛擬機(jī),但是跟Java語言并沒有強(qiáng)相關(guān),JVM主要提供一種執(zhí)行字節(jié)碼(class文件的載體),很多其他的語言例如python都有基于jvm的實(shí)現(xiàn)版本,JVM在很多時(shí)候給我們提供了便利,屏蔽了很多細(xì)節(jié),尤其是垃圾回收與跨平臺(tái)與多線程機(jī)制.

JVM的基本結(jié)構(gòu)如下: 這里寫圖片描述

它處于連接基本類庫與字節(jié)碼文件和操作系統(tǒng)之間的位置.jvm也是Java語言跨平臺(tái)的基礎(chǔ).

Java整個(gè)語言體系如圖:

這里寫圖片描述

jdk中的jre首先用編譯器講我們編寫的Java文件編譯成class字節(jié)碼文件,然后JVM加載字節(jié)碼文件進(jìn)行解釋執(zhí)行.不針對(duì)特定平臺(tái)進(jìn)行編程,因?yàn)槊總€(gè)平臺(tái)都應(yīng)該應(yīng)該依賴JVM規(guī)范進(jìn)行JVM實(shí)現(xiàn).因此抽象出的公共接口暴露給程序調(diào)用的規(guī)范是統(tǒng)一的.

這里寫圖片描述

前面也提過,JVM并不認(rèn)識(shí)特定的語言,而是只認(rèn)識(shí)字節(jié)碼文件,JVM規(guī)范對(duì)字節(jié)碼文件格式進(jìn)行嚴(yán)格的控制,這直接關(guān)系到JVM的安全性.依照特定的規(guī)則在執(zhí)行引擎的處理下,JVM完成類加載,將靜態(tài)的類文件映射到虛擬機(jī)的運(yùn)行數(shù)據(jù)環(huán)境.

類加載如下:

這里寫圖片描述

到了運(yùn)行數(shù)據(jù)區(qū),這里就是JVM進(jìn)行管理的主要內(nèi)存區(qū)域了,這里主要分為6個(gè)部分:程序計(jì)數(shù)器,虛擬機(jī)棧區(qū),本地方法棧區(qū),堆區(qū),方法區(qū),運(yùn)行時(shí)常量池.

主要結(jié)構(gòu)如圖: 這里寫圖片描述 接下來分別介紹6個(gè)數(shù)據(jù)區(qū)的主要用途:

1. 程序計(jì)數(shù)器

程序計(jì)數(shù)器占用的大小比較小,每個(gè)線程都會(huì)創(chuàng)建自己的程序計(jì)數(shù)器,當(dāng)然它的生存周期也就跟線程的生存周期保持一直了,它的主要用途是跟蹤程序方法執(zhí)行的路徑,它記錄了當(dāng)前方法執(zhí)行的操作和位置,在進(jìn)行多線程調(diào)度的時(shí)候是需要進(jìn)行CPU分片的,有了程序計(jì)數(shù)器就可以保護(hù)線程的執(zhí)行情況,當(dāng)獲得CPU使用權(quán)的時(shí)候能夠進(jìn)行線程恢復(fù).它一般存放的指令為:分支、循環(huán)、跳轉(zhuǎn)、異常處理等指令.如果是不是本地方法,這里存放就是字節(jié)碼指令的地址,如果是本地方法,它的值是undefined.這個(gè)區(qū)域通常來說比較小,也是JVM唯一沒有規(guī)定OutOfMemoryError的區(qū)域.

2.虛擬機(jī)棧區(qū)

 這個(gè)區(qū)域也是線程私有的區(qū)域,當(dāng)每個(gè)方法進(jìn)行執(zhí)行的時(shí)候都會(huì)在棧區(qū)創(chuàng)建棧幀(stack frame),棧幀一般存放的局部變量表,操作數(shù)棧,動(dòng)態(tài)連接與方法出口等信息.局部變量表存放的方法入口還有在編譯器就確定的基本數(shù)據(jù)類型(long與double類型占用兩個(gè)slot,其余占用一個(gè))和引用類型和returnAddress類型(eturnAddress類型會(huì)被Java虛擬機(jī)的jsr、ret和jsr_w指令所使用。returnAddress類型的值指向一條虛擬機(jī)指令的操作碼。與前面介紹的那些數(shù)值類的原生類型不同,returnAddress類型在Java語言之中并不存在相應(yīng)的類型,也無法在程序運(yùn)行期間更改returnAddress類型的值。)這個(gè)區(qū)域確定了兩種異常情況,當(dāng)方法調(diào)用深度超過JVM的允許值會(huì)拋出StackOverflow,如果動(dòng)態(tài)的擴(kuò)展無法申請到足夠多的內(nèi)存也會(huì)拋出OutOfMemoryError,虛擬機(jī)規(guī)范并沒要求這個(gè)區(qū)域是否可擴(kuò)展,但大部分實(shí)現(xiàn)的虛擬都是可擴(kuò)展的.

3.本地方法棧

 本地方法棧與虛擬機(jī)棧基本一直,主要區(qū)別一個(gè)管理的目標(biāo)是字節(jié)碼定義的方法棧,本地方法棧管理的是本地方法.這個(gè)區(qū)域的規(guī)范并不強(qiáng)制語言與數(shù)據(jù)結(jié)構(gòu),給跨平臺(tái)提供靈活的選擇性.

4.堆

 這是虛擬機(jī)中最大的一塊區(qū)域,也是開發(fā)者所指的JVM內(nèi)存的主要含義,不僅僅是因?yàn)樗急壤话阕畲螅匾氖抢厥盏哪繕?biāo)也主要在這個(gè)區(qū)域,這個(gè)區(qū)按照規(guī)范的定義是存放實(shí)例的唯一區(qū)域,但是隨著最新的技術(shù)發(fā)展(JIT技術(shù)與逃逸)發(fā)展,對(duì)象也不一定在這個(gè)區(qū)域存放.這個(gè)區(qū)域也是多個(gè)線程共享的,因此也會(huì)帶來多線程并發(fā)的復(fù)雜性.保持對(duì)象的一致性也是控制堆上的對(duì)象能夠?qū)Χ鄠€(gè)線程保持?jǐn)?shù)據(jù)的一致.堆上主要存放對(duì)象實(shí)例和數(shù)組,當(dāng)JVM啟動(dòng)的時(shí)候就存在了堆區(qū)域,這與棧區(qū)不太一樣,棧是在方法開始調(diào)用的時(shí)候才開始創(chuàng)建.堆中的垃圾回收根據(jù)對(duì)象生存周期的不同來進(jìn)行分代收集,主要的收集算法也有標(biāo)記-清除,復(fù)制-整理,復(fù)制-壓縮等算法,根據(jù)這些算法也有一些串行,并行,甚至并發(fā)的垃圾收集器.在主流hotspot也分為年輕代(可以分為Eden和Survivor)和老年代.這個(gè)區(qū)域可以是連續(xù)的內(nèi)存也可以只是邏輯連續(xù)的.

5.方法區(qū)

 這個(gè)區(qū)域主要存放被JVM加載的類的信息,包括常量,靜態(tài)變量,即時(shí)編譯后的代碼,這個(gè)區(qū)域垃圾回收效果收益不大但是是必要的.主要的收集對(duì)象為常量和需要卸載的類,類的回收機(jī)制有特定的要求.,并且十分的嚴(yán)苛.這個(gè)區(qū)域別名為Non-heap.在hotspot中使用堆中的永久區(qū)(其他JVM實(shí)現(xiàn)一般沒所謂的永久區(qū))來實(shí)現(xiàn)方法區(qū),這樣將垃圾回收器直接覆蓋到了堆中的方法區(qū)(hotspot中的永久區(qū)),省去了專門為永久區(qū)進(jìn)行垃圾收集的工作,但是這樣增加了堆溢出的風(fēng)險(xiǎn),因此現(xiàn)在jdk逐漸講方法區(qū)移除到堆外.

6.運(yùn)行時(shí)常量池

 屬于方法區(qū)的一個(gè)部分,存放Class類編譯器各種能夠確定的字面量和符號(hào)引用(和直接引用).字節(jié)碼格式中一般對(duì)其他區(qū)域要求嚴(yán)格,這個(gè)區(qū)域是比較寬松的.受到方法區(qū)大小限制,申請不到足夠的內(nèi)存也會(huì)拋出OutOfMemoryError異常.

7.堆外內(nèi)存(直接內(nèi)存)

 有些時(shí)候我們可以直接使用堆外內(nèi)存,例如jdk1.4引入的java nio就用channel與buffer調(diào)用本地方法在堆外分配內(nèi)存,使用堆上的DirectByteBuffer作為引用進(jìn)行操作,這樣減少了堆內(nèi)外數(shù)據(jù)交換,提升性能.當(dāng)然這個(gè)區(qū)域的大小受到物理內(nèi)存大小限制,申請不夠拋出OutOfMemoryError異常.


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 狠狠干伊人网 | 怦然心动50免费完整版 | 麻豆19禁国产青草精品 | 91精品国产乱码久久久久 | 日韩激情一区二区三区 | 色综合久久99| 精品一区二区在线播放 | 欧美人人干| 免费毛片在线视频 | 高清在线国产 | 天天躁狠狠躁夜躁2020挡不住 | 操毛片 | 国产超碰人人爽人人做人人爱 | 久久99精品久久久久久久久久久久 | 一区二区免费看 | 青青草华人在线 | 午夜视频亚洲 | av手机免费在线观看 | 黄www片| 欧美大穴 | 黄色毛片a级 | 欧美黄色片免费看 | 热99在线视频 | 激情综合婷婷久久 | 成人在线视频精品 | 国产成人精品午夜视频' | 一区二区三区日本在线观看 | 日韩精品中文字幕一区 | 欧美成年性h版影视中文字幕 | 日韩精品一二三 | 天天操天天骑 | av在线网站观看 | 91精品国产一区二区在线观看 | 亚洲黑人在线观看 | 最污网站 | 中文字幕一区在线观看视频 | 久久网综合 | 免费毛片随便看 | 久久免费观看一级毛片 | 深夜毛片免费看 | 欧美老外a级毛片 |