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

簡(jiǎn)單了解Java程序運(yùn)行整體流程

 更新時(shí)間:2020年07月03日 16:03:41   作者:Tim_Bergling  
這篇文章主要介紹了簡(jiǎn)單了解Java程序運(yùn)行整體流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

概述

Java程序從創(chuàng)建源文件到程序運(yùn)行要經(jīng)歷兩個(gè)主要步驟:

  • 源文件 編譯器編譯> 字節(jié)碼文件(ByteCode)。
  • 字節(jié)碼文件 JVM解釋運(yùn)行> 在內(nèi)存中運(yùn)行

Java程序從編譯到運(yùn)行

示例程序:

public class ClassA{
  public static void main(String[] args){
    ClassB b = new ClassB("b");
    b.method();
  }
}

class ClassB{
  private String name;
  public ClassB(String name){
    this.name = name;
  }
  
  public void method(){
    System.out.println("ClassB method()");
  }

}

編譯

  • 源文件被編譯成.class文件。
  • 若一個(gè)類所依賴的類還沒(méi)有編譯,則先編譯被依賴的類,然后引用。
  • 若已編譯,則直接引用。
  • 若找不到指定類的文件,則拋出cannot find symbol錯(cuò)誤。
  • 編譯后生成的字節(jié)碼文件由兩部分組成:
    • 常量池:代碼中的所有token(類名,成員變量名)和符號(hào)引用(方法引用,成員變量引用)
    • 方法字節(jié)碼:類中各個(gè)方法的字節(jié)碼。

運(yùn)行

Java類的運(yùn)行過(guò)程:

  • 類的加載
  • 類的執(zhí)行

注:

JVM在程序第一次主動(dòng)使用類的時(shí)候才加載類,而不是一開(kāi)始將所有的類都加載到內(nèi)存中,只加載一次。

詳細(xì)步驟:

  • 系統(tǒng)啟動(dòng)一個(gè)JVM進(jìn)程,JVM從classpath路徑中查找對(duì)應(yīng)的字節(jié)碼文件,將對(duì)應(yīng)的類信息加載到運(yùn)行時(shí)數(shù)據(jù)區(qū)的方法區(qū)內(nèi)(類的加載)。
  • JVM找到類的主函數(shù)入口,執(zhí)行main函數(shù)。
  • 若需創(chuàng)建對(duì)象,而方法區(qū)沒(méi)有該類的信息,則加載對(duì)應(yīng)的類,并把類信息放入方法區(qū)。
  • 加載所需的類后,JVM在堆區(qū)中為實(shí)例對(duì)象分配內(nèi)存,并調(diào)用構(gòu)造函數(shù)初始化實(shí)例。(該實(shí)例有指向方法區(qū)對(duì)應(yīng)類的類信息的引用)
  • 當(dāng)調(diào)用實(shí)例的方法時(shí),JVM由對(duì)象引用找到堆中的對(duì)象,再由對(duì)象持有的引用定位到方法區(qū)中類的類型信息的方法表,從而獲得待調(diào)用函數(shù)的字節(jié)碼的地址。
  • 開(kāi)始執(zhí)行調(diào)用的函數(shù)。

注:

  • public和protected的實(shí)例方法采用動(dòng)態(tài)綁定機(jī)制:要用到方法表。
  • private,static,構(gòu)造器和初始化方法采用靜態(tài)綁定機(jī)制:不需要方法表。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中ArrayList和LinkedList之間的區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java中ArrayList和LinkedList之間的區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了Java中ArrayList和LinkedList之間的區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Mybatis-plus動(dòng)態(tài)條件查詢QueryWrapper的使用案例

    Mybatis-plus動(dòng)態(tài)條件查詢QueryWrapper的使用案例

    mybatis-plus框架功能很強(qiáng)大,把很多功能都集成了,下面這篇文章主要給大家介紹了關(guān)于Mybatis-plus動(dòng)態(tài)條件查詢QueryWrapper的使用教程,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Springboot Druid 自定義加密數(shù)據(jù)庫(kù)密碼的幾種方案

    Springboot Druid 自定義加密數(shù)據(jù)庫(kù)密碼的幾種方案

    這篇文章主要介紹了Springboot Druid 自定義加密數(shù)據(jù)庫(kù)密碼的步驟,幫助大家更好的理解和使用springboot,感興趣的朋友可以了解下
    2020-12-12
  • Spring容器刷新prepareRefresh第一步

    Spring容器刷新prepareRefresh第一步

    這篇文章主要為大家介紹了Spring容器刷新prepareRefresh第一步示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Struts2的輸入校驗(yàn)實(shí)例代碼

    Struts2的輸入校驗(yàn)實(shí)例代碼

    這篇文章主要介紹了Struts2的輸入校驗(yàn)實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值, 需要的朋友可以參考下
    2017-03-03
  • 如何避免在Java項(xiàng)目里大批量使用if-else?

    如何避免在Java項(xiàng)目里大批量使用if-else?

    想起剛開(kāi)始接觸JAVA時(shí),若遇到大量流程判斷語(yǔ)句,幾乎滿屏都是if-else語(yǔ)句,多得讓自己都忘了哪里是頭,哪里是尾,但是,縱然滿屏是if-else,但彼時(shí)也沒(méi)有覺(jué)得多別扭.等到編程能力漸漸提升之后,再回過(guò)頭去看曾經(jīng)寫(xiě)過(guò)的滿屏if-else時(shí),感覺(jué)全都是翔.....,需要的朋友可以參考下
    2021-06-06
  • Java之SpringBoot集成ActiveMQ消息中間件案例講解

    Java之SpringBoot集成ActiveMQ消息中間件案例講解

    這篇文章主要介紹了Java之SpringBoot集成ActiveMQ消息中間件案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Servlet簡(jiǎn)單實(shí)現(xiàn)登錄功能

    Servlet簡(jiǎn)單實(shí)現(xiàn)登錄功能

    這篇文章主要為大家詳細(xì)介紹了Servlet簡(jiǎn)單實(shí)現(xiàn)登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • MyBatis?詳細(xì)講解動(dòng)態(tài)?SQL的使用

    MyBatis?詳細(xì)講解動(dòng)態(tài)?SQL的使用

    動(dòng)態(tài)?SQL?是?MyBatis?的強(qiáng)大特性之一。如果你使用過(guò)?JDBC?或其它類似的框架,你應(yīng)該能理解根據(jù)不同條件拼接?SQL?語(yǔ)句有多痛苦,例如拼接時(shí)要確保不能忘記添加必要的空格,還要注意去掉列表最后一個(gè)列名的逗號(hào)。利用動(dòng)態(tài)?SQL,可以徹底擺脫這種痛苦
    2022-04-04
  • Springmvc國(guó)際化自動(dòng)配置代碼實(shí)現(xiàn)

    Springmvc國(guó)際化自動(dòng)配置代碼實(shí)現(xiàn)

    這篇文章主要介紹了Springmvc國(guó)際化自動(dòng)配置代碼實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論

赫章县| 潼南县| 南溪县| 游戏| 北票市| 盐城市| 田林县| 荣昌县| 涪陵区| 娄底市| 通许县| 周口市| 孟州市| 寿宁县| 高唐县| 绍兴县| 天台县| 灵丘县| 定兴县| 堆龙德庆县| 永仁县| 建水县| 金阳县| 柘城县| 襄垣县| 汶川县| 龙岩市| 灵石县| 织金县| 农安县| 昭觉县| 梨树县| 若尔盖县| 江门市| 都安| 于都县| 吴堡县| 库伦旗| 新津县| 玉龙| 广德县|