真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JVM的原理是什么

這篇文章主要為大家展示了“JVM的原理是什么”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“JVM的原理是什么”這篇文章吧。

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

一.JVM的原理

Java虛擬機(jī)是Java平臺的基石,解決了硬件和操作系統(tǒng)的相互獨(dú)立性。不同平臺(Windows,Linux和MacOS)的JVM都是不同的,但是他們都提供了相同的接口。虛擬機(jī)可以分為系統(tǒng)虛擬機(jī)和程序虛擬機(jī)。系統(tǒng)虛擬機(jī)就是VMware和VirtualBox這一類的,完全是對物理資源的隔離。而Java虛擬機(jī)是程序虛擬機(jī),它包含了一組指令集并在運(yùn)行時操作各個不同內(nèi)存區(qū)域,這些指令在JVM中稱為Java字節(jié)碼指令。

JVM的原理是什么

二.JVM的結(jié)構(gòu)

JVM的基本結(jié)構(gòu)如下圖所示:

JVM的原理是什么

圖中的Java文件泛指所有構(gòu)建在Java虛擬機(jī)上的編程語言文件,如Groovy, Scala, Kotlin等。JVM不和上述任何語言關(guān)聯(lián),而是使用javac把這些語言編譯為“Class文件”的這種二進(jìn)制格式。Class文件中包含了JVM指令集和符號表已經(jīng)其他一些信息。

2.1 類加載子系統(tǒng)

負(fù)責(zé)從class字節(jié)碼文件中并存放在方法區(qū)的內(nèi)存中,并對數(shù)據(jù)進(jìn)行校驗(yàn),轉(zhuǎn)換解析和初始化,最終形成可以被虛擬機(jī)直接使用的Java類型。

2.2 執(zhí)行引擎

負(fù)責(zé)執(zhí)行虛擬機(jī)的字節(jié)碼,JVM制定了自己的指令集和體系結(jié)構(gòu),輸入字節(jié)碼文件并輸出執(zhí)行結(jié)果。

2.3 程序計數(shù)器

是一塊較小的內(nèi)存空間,可以看做是當(dāng)前線程所執(zhí)行的字節(jié)碼行號指示器,每個線程都有一個獨(dú)立的程序計數(shù)器。在虛擬機(jī)概念模型中,字節(jié)碼解釋器工作時就是通過改變計數(shù)器的值來選取下一條待執(zhí)行的指令。當(dāng)發(fā)生CPU時間片切換的時候,由程序計數(shù)器來確保當(dāng)線程重新獲取到CPU時間片后能夠恢復(fù)到正確的執(zhí)行位置。
如果當(dāng)前方法是Java方法,程序計數(shù)器的值是正在執(zhí)行的虛擬機(jī)字節(jié)碼指令地址;如果是Native方法,則為空

2.4 虛擬機(jī)棧

是線程私有的,并與線程的生命周期相同。虛擬機(jī)棧中又會包含多個棧幀,每運(yùn)行一個方法就創(chuàng)建一個棧幀,用于存儲局部變量表、操作棧、方法返回值等。每一個方法從調(diào)用直至執(zhí)行完成的過程,就對應(yīng)一個棧幀在java棧中入棧到出棧的過程。
其中的局部變量表存放了各種基本數(shù)據(jù)類型,對象引用地址和returnAddress。所以局部變量表所需要的內(nèi)存空間在編譯期就可以完成分配。當(dāng)進(jìn)入到一個方法的時候,該方法所需要在棧幀中的大小是確定的,并且在運(yùn)行期間不會改變

2.5 本地方法棧

本地方法棧的作用類似于虛擬機(jī)棧,只不過虛擬機(jī)棧是為執(zhí)行Java方法服務(wù),而本地方法棧則為虛擬機(jī)使用到的native方法服務(wù)

2.6 堆

堆在虛擬機(jī)啟動的時候創(chuàng)建,是被所有線程共享的一塊內(nèi)存區(qū)域。幾乎所有的對象都放在堆上,堆也就成為了垃圾回收的主要區(qū)域。在JDK1.8之前,堆可以分為新生代和老年代,其中新生代又可以細(xì)分為Eden,From和To三塊區(qū)域。

JVM的原理是什么

從JDK1.8開始,永久代從堆內(nèi)存中被轉(zhuǎn)移到本地內(nèi)存中

JVM的原理是什么

2.7 方法區(qū)

各個線程共享的內(nèi)存區(qū)域,用于存儲已經(jīng)被加載的類信息、常量、靜態(tài)變量、及時編譯器編譯后的代碼等。在HotSpot虛擬機(jī)上方法區(qū)就對應(yīng)上圖中的永久代。該區(qū)域不需要連續(xù)的內(nèi)存區(qū)域,GC回收的主要目標(biāo)是針對常量池和類型的卸載。

以上是“JVM的原理是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


文章題目:JVM的原理是什么
標(biāo)題來源:http://weahome.cn/article/jscihj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部