欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入解析java虛擬機(jī)

 更新時(shí)間:2013年08月16日 09:35:07   作者:  
以下是對java中的虛擬機(jī)進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下

java虛擬機(jī)是什么

“java虛擬機(jī)”可能指以下三種東西:
1)、抽象規(guī)范;
2)、一個(gè)具體的實(shí)現(xiàn);
3)、一個(gè)運(yùn)行中的虛擬機(jī)實(shí)例;

java虛擬機(jī)生命周期

啟動(dòng)
當(dāng)啟動(dòng)一個(gè)java程序時(shí),一個(gè)虛擬機(jī)實(shí)例誕生。
虛擬機(jī)實(shí)例通過調(diào)用某個(gè)初始類的public static void main(String[] args)方法來運(yùn)行一個(gè)java程序。
任何擁有這樣一個(gè)main方法的類都可以作為java程序運(yùn)行的起點(diǎn),所以必須要告訴虛擬機(jī)初始類的名稱,整個(gè)程序?qū)乃膍ain方法開始運(yùn)行。

消亡
初始類的main方法作為程序初始線程的起點(diǎn),任何其他線程都是由初始線程啟動(dòng)。
java虛擬機(jī)內(nèi)部有兩種線程:守護(hù)線程和非守護(hù)線程。
守護(hù)線程,通常是虛擬機(jī)使用的線程,如執(zhí)行垃圾收集。java程序也可以把創(chuàng)建的線程標(biāo)記為守護(hù)線程。
非守護(hù)線程,java中的初始線程,就是開始于main方法的線程是非守護(hù)線程。
只要程序中有非守護(hù)線程在運(yùn)行,那么java程序也在繼續(xù)運(yùn)行(虛擬機(jī)仍然存活),當(dāng)程序中所有的非守護(hù)線程都終止時(shí),虛擬機(jī)實(shí)例自動(dòng)退出。
程序本身也可以通過Runtime類或System類的exit()方法退出。

java虛擬機(jī)體系結(jié)構(gòu)

類裝載子系統(tǒng)
1)、負(fù)責(zé)查找并裝載類型,分成裝載、連接和初始化,在java類型生命周期中有詳細(xì)說明;
2)、有兩種類裝載器:啟動(dòng)類裝載器和用戶自定義類裝載器;
用戶自定義類裝載器必須派生自java.lang.ClassLoader類。

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

方法區(qū)
被裝載類型的信息存儲(chǔ)在方法區(qū)中,詳細(xì)如下:
基本信息
1)、類型的全限定名;
2)、類型的直接超類的全限定名;
3)、類型是類類型還是接口類型;
4)、類型的訪問修飾符;
5)、直接超接口的全限定名;

其他信息
1)、類型的常量池;
2)、字段信息;
3)、方法信息;
4)、除了常量以為的所有靜態(tài)變量;
5)、一個(gè)到ClassLoader類的引用;
6)、一個(gè)到Class類的引用;


1)、運(yùn)行時(shí)創(chuàng)建的所有類實(shí)例和數(shù)組都放在堆中;
2)、一個(gè)java虛擬機(jī)實(shí)例只存在一個(gè)堆空間,因此虛擬機(jī)中的所有線程都共享這個(gè)堆
3)、一個(gè)java程序獨(dú)占一個(gè)java虛擬機(jī)實(shí)例,因此每個(gè)java程序都有他自己的堆空間;

java棧

1)、每啟動(dòng)一個(gè)新線程時(shí),java虛擬機(jī)都會(huì)為他分配一個(gè)java棧;
2)、java棧以幀為單位保存線程的運(yùn)行狀態(tài);
3)、java虛擬機(jī)對java棧只執(zhí)行兩種操作:壓棧和出棧;
4)、壓棧:每當(dāng)線程調(diào)用一個(gè)java方法時(shí),虛擬機(jī)都會(huì)在該線程的java棧中壓入一個(gè)新幀。使用這個(gè)幀來存儲(chǔ)參數(shù)、局部變量、中間運(yùn)算結(jié)果等;
5)、出棧:當(dāng)java方法通過return正常返回,或通過拋出異常中止,虛擬機(jī)都會(huì)將當(dāng)前幀彈出java棧然后釋放掉;
6)、棧數(shù)據(jù)是線程私有的,所以不需要考慮多線程情況下棧數(shù)據(jù)的訪問同步問題;

棧幀
1)、棧幀由三部分組成:局部變量區(qū)、操作數(shù)區(qū)和棧數(shù)據(jù)區(qū);

PC寄存器
1)、對于運(yùn)行中的java程序,每個(gè)線程都有自己的pc寄存器;
2)、線程啟動(dòng)時(shí)創(chuàng)建;
3)、當(dāng)線程執(zhí)行某個(gè)java方法時(shí),PC寄存器的內(nèi)容總是下一條將被執(zhí)行指令的地址。

本地方法棧
1)、任何本地方法接口都會(huì)使用本地方法棧;

執(zhí)行引擎
1)、執(zhí)行引擎是java虛擬機(jī)實(shí)現(xiàn)的核心;
2)、“執(zhí)行引擎”可以有三種理解:
  a)、一個(gè)是抽象的規(guī)范;
      b)、一個(gè)是具體的實(shí)現(xiàn);
      c)、一個(gè)是正在運(yùn)行的實(shí)例;
3)、執(zhí)行引擎的行為使用指令集來定義。對于每條指令,規(guī)范都規(guī)定了執(zhí)行該指令時(shí)應(yīng)該處理什么,如果處理不做規(guī)定;
待細(xì)化。。。

相關(guān)文章

  • Java 遞歸查詢部門樹形結(jié)構(gòu)數(shù)據(jù)的實(shí)踐

    Java 遞歸查詢部門樹形結(jié)構(gòu)數(shù)據(jù)的實(shí)踐

    本文主要介紹了Java 遞歸查詢部門樹形結(jié)構(gòu)數(shù)據(jù)的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java多線程之線程安全問題詳解

    Java多線程之線程安全問題詳解

    這篇文章主要為大家詳細(xì)介紹了Java多線程之線程安全問題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 如何使用Sentry 監(jiān)控你的Spring Boot應(yīng)用

    如何使用Sentry 監(jiān)控你的Spring Boot應(yīng)用

    這篇文章主要介紹了如何使用Sentry 監(jiān)控你的Spring Boot應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java list foreach修改元素方式

    Java list foreach修改元素方式

    這篇文章主要介紹了Java list foreach修改元素方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • java驗(yàn)證電話號碼的方法

    java驗(yàn)證電話號碼的方法

    這篇文章主要介紹了java驗(yàn)證電話號碼的方法,需要的朋友可以參考下
    2014-02-02
  • Java?18?新特性之Web服務(wù)器?jwebserver功能

    Java?18?新特性之Web服務(wù)器?jwebserver功能

    JEP?408:?Simple?Web?Server,是這次Java?18推出的一個(gè)比較獨(dú)立的全新功能點(diǎn)。我們可以通過命令行工具來啟動(dòng)一個(gè)提供靜態(tài)資源訪問的迷你Web服務(wù)器,本文通過一個(gè)構(gòu)建HTML頁面的例子,來嘗試一下jwebserver的功能
    2022-04-04
  • java基礎(chǔ)知識之FileInputStream流的使用

    java基礎(chǔ)知識之FileInputStream流的使用

    這篇文章主要介紹了java基礎(chǔ)知識之FileInputStream流的使用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java版微信和支付寶退款接口

    java版微信和支付寶退款接口

    這篇文章主要為大家詳細(xì)介紹了java版微信退款接口和java版支付寶退款接口,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Mybatis日期格式自動(dòng)轉(zhuǎn)換需要用到的兩個(gè)注解說明

    Mybatis日期格式自動(dòng)轉(zhuǎn)換需要用到的兩個(gè)注解說明

    這篇文章主要介紹了Mybatis日期格式自動(dòng)轉(zhuǎn)換需要用到的兩個(gè)注解說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 使用IDEA打jar包的詳細(xì)圖文教程

    使用IDEA打jar包的詳細(xì)圖文教程

    JAR文件是一種壓縮文件,與常見的ZIP壓縮文件兼容,被稱為JAR包,下面這篇文章主要給大家介紹了關(guān)于使用IDEA打jar包的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08

最新評論