成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JVM入門系列-JVM總覽

娣辯孩 / 1983人閱讀

摘要:模板解釋器和字節(jié)碼解釋器差不多,不一樣的地方在于直接把對應(yīng)的指令集轉(zhuǎn)成本地代碼編譯器可以針對熱點代碼優(yōu)化,執(zhí)行開銷較大,但是能夠針對性的優(yōu)化,效率最高垃圾收集器負(fù)責(zé)回收不再使用的對象,釋放和整理內(nèi)存簡稱。

(原發(fā)于知乎, 定期同步至segmentfault, 原文地址:知乎-JVM入門系列-JVM總覽)
Java宣稱Write Once Run Everywhere,這意味著在一個平臺上開發(fā)的java程序可以不加修改的運行在其他平臺上面。能達成這個功能依賴的就是jvm屏蔽了底層的差異。

當(dāng)我們編寫.java文件之后,編譯器會將其編譯成同名的.class文件。class文件是一個字節(jié)碼文件,jvm會加載并且執(zhí)行它,下方就是整體框圖。


(圖片來源:wikipedia-Java virtual machine)

如圖所示,虛擬機主要可以被分為三塊:

類加載系統(tǒng)

運行時數(shù)據(jù)區(qū)

執(zhí)行引擎

類加載系統(tǒng)Class Loader Subsystem

類加載系統(tǒng)負(fù)責(zé)驗證并且加載.class文件,主要可以劃分為三個步驟:

加載(Loading)

鏈接(Linking)

初始化(Initialization)

加載

類文件在這一塊被加載到內(nèi)存中去。類加載器(class loader)可以劃分為Boot Strap class Loader, Extension class Loader, and Application class Loader

Boot Strap class Loader - 加載系統(tǒng)引導(dǎo)類( $JAVA_HOME/jre/lib))

Extension class Loader - 加載拓展類($JAVA_HOME/jre/lib/ext)

Application class Loader - 也被稱為User class loader, 負(fù)責(zé)加載應(yīng)用層級的類

鏈接

Verify - 驗證字節(jié)碼是否正確

Prepare - 在這一步分配靜態(tài)變量并且設(shè)置默認(rèn)值

Resolve - 所有的符號引用都會被替換成指向方法區(qū)的原始引用

初始化

這是類加載的最后一步,所有的靜態(tài)變量都會被賦值。執(zhí)行順序是從上到下的,由父類到子類。

運行時數(shù)據(jù)區(qū) Runtime Data Area

運行時數(shù)據(jù)區(qū)可以劃分為5個區(qū)域

方法區(qū) - 保存類數(shù)據(jù)信息,包括成員信息,父類和接口信息,運行時常量池等,jvm共享

堆區(qū) - 保存所有的對象信息,jvm共享

棧區(qū) - 每個線程獨有自己的棧,生命周期和線程一致

PC寄存器區(qū) - 儲存當(dāng)前執(zhí)行指令的地址,如果執(zhí)行的是是本地方法pc為null

本地方法棧區(qū) - 和棧區(qū)一致,只不過存放的是本地方法信息

執(zhí)行引擎 Execution Engine

執(zhí)行引擎負(fù)責(zé)執(zhí)行代碼,執(zhí)行引擎會依次讀取字節(jié)碼并且按順序執(zhí)行。一般來說可以劃分為如下幾個組件

字節(jié)碼解釋器

字節(jié)碼解釋器(Bytecode Interpreter),就像名字顯示的一樣,是用來執(zhí)行字節(jié)碼。優(yōu)點是執(zhí)行開銷小,缺點是執(zhí)行效率較低。

模板解釋器

和字節(jié)碼解釋器差不多,不一樣的地方在于直接把對應(yīng)的指令集轉(zhuǎn)成本地代碼

JIT編譯器

可以針對熱點代碼優(yōu)化,執(zhí)行開銷較大,但是能夠針對性的優(yōu)化,效率最高

垃圾收集器

負(fù)責(zé)回收不再使用的對象,釋放和整理內(nèi)存

Java Native Interface

Java native interface, 簡稱JNI。暴露了本地方法的接口,使得java可以調(diào)用本地方法

Native Method Libraries

本地方法庫

參考:

Java_virtual_machine

The JVM Architecture Explained

How JVM Works – JVM Architecture?

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70277.html

相關(guān)文章

  • Java相關(guān)

    摘要:本文是作者自己對中線程的狀態(tài)線程間協(xié)作相關(guān)使用的理解與總結(jié),不對之處,望指出,共勉。當(dāng)中的的數(shù)目而不是已占用的位置數(shù)大于集合番一文通版集合番一文通版垃圾回收機制講得很透徹,深入淺出。 一小時搞明白自定義注解 Annotation(注解)就是 Java 提供了一種元程序中的元素關(guān)聯(lián)任何信息和著任何元數(shù)據(jù)(metadata)的途徑和方法。Annotion(注解) 是一個接口,程序可以通過...

    wangtdgoodluck 評論0 收藏0
  • 利用MAT分析JVM內(nèi)存問題,從入門到精通(二)

    摘要:用于列舉最近分析過的文件常用功能欄,從左到右依次是概覽類直方圖支配樹查詢線程視圖報告相關(guān)詳細(xì)功能。針對那些占用堆內(nèi)存超過整個堆內(nèi)存大小的組件做一系列的分析,例如保留集合潛在的內(nèi)存浪費問題等其他問題。 上一篇文章MAT入門到精通(一)介紹了MAT的使用場景和基本概念,這篇文章開始介紹MAT的基本功能,后面還有兩篇,一篇是MAT的高級功能,另一篇是MAT實戰(zhàn)案例分析。 三、歡迎頁 使用MA...

    amuqiao 評論0 收藏0
  • Java進階之路

    摘要:探索專為而設(shè)計的將探討進行了何種改進,以及這些改進背后的原因。關(guān)于最友好的文章進階前言之前就寫過一篇關(guān)于最友好的文章反響很不錯,由于那篇文章的定位就是簡單友好,因此盡可能的摒棄復(fù)雜的概念,只抓住關(guān)鍵的東西來講,以保證大家都能看懂。 周月切換日歷 一個可以進行周月切換的日歷,左右滑動的切換月份,上下滑動可以進行周,月不同的視圖切換,可以進行事件的標(biāo)記,以及節(jié)假日的顯示,功能豐富 Andr...

    sushi 評論0 收藏0
  • Java深入-框架技巧

    摘要:從使用到原理學(xué)習(xí)線程池關(guān)于線程池的使用,及原理分析分析角度新穎面向切面編程的基本用法基于注解的實現(xiàn)在軟件開發(fā)中,分散于應(yīng)用中多出的功能被稱為橫切關(guān)注點如事務(wù)安全緩存等。 Java 程序媛手把手教你設(shè)計模式中的撩妹神技 -- 上篇 遇一人白首,擇一城終老,是多么美好的人生境界,她和他歷經(jīng)風(fēng)雨慢慢變老,回首走過的點點滴滴,依然清楚的記得當(dāng)初愛情萌芽的模樣…… Java 進階面試問題列表 -...

    chengtao1633 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<