最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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í)例通過(guò)調(diào)用某個(gè)初始類(lèi)的public static void main(String[] args)方法來(lái)運(yùn)行一個(gè)java程序。
任何擁有這樣一個(gè)main方法的類(lèi)都可以作為java程序運(yùn)行的起點(diǎn),所以必須要告訴虛擬機(jī)初始類(lèi)的名稱(chēng),整個(gè)程序?qū)乃膍ain方法開(kāi)始運(yùn)行。

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

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

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

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

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

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


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

java棧

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

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

PC寄存器
1)、對(duì)于運(yùn)行中的java程序,每個(gè)線(xiàn)程都有自己的pc寄存器;
2)、線(xiàn)程啟動(dòng)時(shí)創(chuàng)建;
3)、當(dāng)線(xiàn)程執(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í)行引擎的行為使用指令集來(lái)定義。對(duì)于每條指令,規(guī)范都規(guī)定了執(zhí)行該指令時(shí)應(yīng)該處理什么,如果處理不做規(guī)定;
待細(xì)化。。。

相關(guān)文章

  • RocketMQ?producer發(fā)送者淺析

    RocketMQ?producer發(fā)送者淺析

    RocketMQ生產(chǎn)者是一種高性能、可靠的消息發(fā)送者,能夠?qū)⑾⒖焖?、可靠地發(fā)送到RocketMQ消息隊(duì)列中。它具有多種消息發(fā)送模式和消息發(fā)送方式,可以根據(jù)不同的業(yè)務(wù)需求進(jìn)行靈活配置
    2023-04-04
  • javabean servlet jsp實(shí)現(xiàn)分頁(yè)功能代碼解析

    javabean servlet jsp實(shí)現(xiàn)分頁(yè)功能代碼解析

    這篇文章主要為大家詳細(xì)解析了javabean servlet jsp實(shí)現(xiàn)分頁(yè)功能代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 多線(xiàn)程(多窗口賣(mài)票實(shí)例講解)

    多線(xiàn)程(多窗口賣(mài)票實(shí)例講解)

    下面小編就為大家?guī)?lái)一篇多線(xiàn)程(多窗口賣(mài)票實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • SpringCloud Ribbon 負(fù)載均衡的實(shí)現(xiàn)

    SpringCloud Ribbon 負(fù)載均衡的實(shí)現(xiàn)

    Ribbon是一個(gè)客戶(hù)端負(fù)載均衡器,它提供了對(duì)HTTP和TCP客戶(hù)端的行為的大量控制。這篇文章主要介紹了SpringCloud Ribbon 負(fù)載均衡的實(shí)現(xiàn),感興趣的小伙伴們可以參考一下
    2019-01-01
  • springBoot整合redis做緩存具體操作步驟

    springBoot整合redis做緩存具體操作步驟

    緩存主要是將數(shù)據(jù)存在計(jì)算機(jī)的內(nèi)存當(dāng)中,以便于在使用的時(shí)候是可以實(shí)現(xiàn)快速讀取使用,它的快也是相對(duì)于硬盤(pán)讀取而言,這篇文章主要給大家介紹了關(guān)于springBoot整合redis做緩存的具體操作步驟,需要的朋友可以參考下
    2024-04-04
  • Java讀寫(xiě)ini文件代碼示例

    Java讀寫(xiě)ini文件代碼示例

    這篇文章主要介紹了Java讀寫(xiě)ini文件代碼示例,分享了相關(guān)代碼示例及相關(guān)注釋?zhuān)【幱X(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 淺析對(duì)Spring?aware接口理解

    淺析對(duì)Spring?aware接口理解

    通過(guò)aware接口可以獲取Spring容器相關(guān)信息,但這樣會(huì)與Spring容器耦合,這篇文章主要介紹了Spring?aware接口理解,需要的朋友可以參考下
    2022-08-08
  • RocketMQ生產(chǎn)者如何規(guī)避故障Broker方式詳解

    RocketMQ生產(chǎn)者如何規(guī)避故障Broker方式詳解

    這篇文章主要為大家介紹了RocketMQ生產(chǎn)者如何規(guī)避故障Broker方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Java雪花算法生成分布式id詳解

    Java雪花算法生成分布式id詳解

    這篇文章主要介紹了Java雪花算法生成分布式id詳解,隨著業(yè)務(wù)的增長(zhǎng),有些表可能要占用很大的物理存儲(chǔ)空間,為了解決該問(wèn)題,后期使用數(shù)據(jù)庫(kù)分片技術(shù),將一個(gè)數(shù)據(jù)庫(kù)進(jìn)行拆分,通過(guò)數(shù)據(jù)庫(kù)中間件連接,需要的朋友可以參考下
    2024-01-01
  • java使用list實(shí)現(xiàn)數(shù)據(jù)庫(kù)的like功能

    java使用list實(shí)現(xiàn)數(shù)據(jù)庫(kù)的like功能

    這篇文章主要介紹了java使用list實(shí)現(xiàn)數(shù)據(jù)庫(kù)的like功能,需要的朋友可以參考下
    2014-04-04

最新評(píng)論

阿坝县| 阳东县| 夏河县| 自贡市| 博乐市| 沁源县| 宣城市| 伊川县| 惠来县| 百色市| 柘城县| 宜君县| 富顺县| 江永县| 增城市| 闵行区| 孙吴县| 四子王旗| 伊川县| 沅江市| 舒城县| 铁岭县| 双桥区| 虹口区| 监利县| 古交市| 宽城| 商南县| 珠海市| 西盟| 天峨县| 庆城县| 宁德市| 阿克苏市| 沈丘县| 静乐县| 凤城市| 会同县| 犍为县| 安岳县| 定日县|