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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JVM實現(xiàn)機制及內(nèi)部基本概念

你對JVM實現(xiàn)機制是否熟悉,這里和大家分享一下,Window的JVM能把字節(jié)碼轉(zhuǎn)換成Window系統(tǒng)的指令集,Linux的JVM能把字節(jié)碼轉(zhuǎn)換成Linux系統(tǒng)的字節(jié),同理還有Solaris,它們彼此之間是不能通用的。

創(chuàng)新互聯(lián)公司服務(wù)項目包括巴州網(wǎng)站建設(shè)、巴州網(wǎng)站制作、巴州網(wǎng)頁制作以及巴州網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,巴州網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到巴州省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

1.JVM實現(xiàn)機制

Java虛擬機就是一個小的計算機,有自己的指令集,有自己的文件系統(tǒng),管理內(nèi)部的表和數(shù)據(jù),負責讀取class文件里面字節(jié)碼,然后轉(zhuǎn)換成不同操作系統(tǒng)的CPU指令,從而使得Java程序在不同的操作系統(tǒng)上順利的跑起來。所以Window的JVM能把字節(jié)碼轉(zhuǎn)換成Window系統(tǒng)的指令集,Linux的JVM能把字節(jié)碼轉(zhuǎn)換成Linux系統(tǒng)的字節(jié),同理還有Solaris,它們彼此之間是不能通用的。

最早一款的原型雖然是Sun公司開發(fā)的,但發(fā)展到現(xiàn)在其實任何廠商都可以自己去實現(xiàn)一個虛擬機,用來讀取字節(jié)碼轉(zhuǎn)換成OS指令。甚至我們可以認為JVM跟Java編程語言都沒有關(guān)系,因為你自己哪怕用記事本寫一串字節(jié)碼,也可以讓JVM來解析運行,只要你的字節(jié)碼能通過JVM的驗證。

JVM的驗證其實是很嚴格的,這里只講一些有趣的地方。大家還記得Java的圖標是一個杯咖啡麼?究其歷史我們也許可以查出為什么,但還有更顯而易見的方式是JVM怎么判斷一個文件是否是class文件?JVM的做法是讀取前4個字節(jié)轉(zhuǎn)換成16進制數(shù),判斷是否等于0xCAFEBABE這個數(shù)。注意到這個單詞了麼?

“cafebabe”,代表著國外一種咖啡品牌,似乎叫做Peet’scoffee-baristas之類。創(chuàng)造Java的人為了方便記憶,選擇了這樣一個16進制數(shù)作為標準class文件的頭,所以任何class文件都必須具有這4個字節(jié)的頭部。我們可以用DataInput這個接口的實現(xiàn)類來驗證一下,讀取任何一個class文件的***個int,int在Java里面是四個字節(jié)。轉(zhuǎn)換成16進制一定會是0xcafebabe的。
所以這里想告訴大家的是,JVM其實并沒有那么神秘,我們完全可以理解它的構(gòu)造。介紹完了JVM實現(xiàn)機制再來看一下JVM內(nèi)部的基本概念。

2.JVM內(nèi)部的基本概念

Java虛擬機內(nèi)部有一些概念,全部列舉是不現(xiàn)實的,太繁瑣也沒有意義。除非您真的想自己去做一個JVM。筆者只列舉部分概念:
首先我們來看一個叫做ReturnAddress的變量,它是JVM用來存儲方法出口或者說進行跳轉(zhuǎn)的依據(jù),把任何地址存入這個變量就一定會按照這個地址來跳轉(zhuǎn)。我們需要注意的就是finally有比方法return更高的賦值給ReturnAddress的優(yōu)先級。同時存在方法return和finallyreturn的話,一定是按照finally里面的return為準。

JVM有自己的Heap,能被所有線程共享,存儲著所有的對象,內(nèi)存是動態(tài)被分配的。對于每個線程,擁有自己的Stack,棧里面存儲的單位叫做Frame(楨)。楨里面就記錄著零時變量、對象引用地址、方法返回值等數(shù)據(jù)。JVM還有一個叫做MethodArea的地方,存儲著一段一段的可執(zhí)行代碼,每一段就是一個方法體,也能被所有線程共享。所以我們說一個線程其實從run方法跑起來,跟它的類中聲明的其他方法是兩個概念。因為其他的方法包括的所有的對象,這個時候都充當為資源被線程使用。

JVM有自己管理內(nèi)存的方案,因為它具有文件系統(tǒng)的功能,我們可以看成一個小型的數(shù)據(jù)庫,內(nèi)部有許許多多不同的表。表的字段可能是另外一張表的地址,也可以直接就是一個存儲數(shù)據(jù)值的地址值。JVM所有對運行時候類的解析驗證計算等管理工作,實際上都是在管理這些表的變動,如果我們從數(shù)據(jù)庫的角度來看,JVM所做的就是根據(jù)你的代碼來操作那么多個表***返回給你結(jié)果的過程。里面的表結(jié)構(gòu)包括class的表、field表、method表、attribute表等。本節(jié)關(guān)于JVM實現(xiàn)機制的內(nèi)容介紹到這里,請關(guān)注本文其他相關(guān)報道。


網(wǎng)站題目:JVM實現(xiàn)機制及內(nèi)部基本概念
分享網(wǎng)址:http://www.5511xx.com/article/dhoogjg.html