91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java程序運行整體流程是什么

發布時間:2020-07-06 13:47:52 來源:億速云 閱讀:178 作者:清晨 欄目:開發技術

這篇文章將為大家詳細講解有關Java程序運行整體流程是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

概述

Java程序從創建源文件到程序運行要經歷兩個主要步驟:

  • 源文件 編譯器編譯> 字節碼文件(ByteCode)。
  • 字節碼文件 JVM解釋運行> 在內存中運行
     

Java程序從編譯到運行

示例程序:

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文件。
  • 若一個類所依賴的類還沒有編譯,則先編譯被依賴的類,然后引用。
  • 若已編譯,則直接引用。
  • 若找不到指定類的文件,則拋出cannot find symbol錯誤。
  • 編譯后生成的字節碼文件由兩部分組成:
    • 常量池:代碼中的所有token(類名,成員變量名)和符號引用(方法引用,成員變量引用)
    • 方法字節碼:類中各個方法的字節碼。
         

運行

Java類的運行過程:

  • 類的加載
  • 類的執行
     

注:

JVM在程序第一次主動使用類的時候才加載類,而不是一開始將所有的類都加載到內存中,只加載一次。

詳細步驟:

  • 系統啟動一個JVM進程,JVM從classpath路徑中查找對應的字節碼文件,將對應的類信息加載到運行時數據區的方法區內(類的加載)。
  • JVM找到類的主函數入口,執行main函數。
  • 若需創建對象,而方法區沒有該類的信息,則加載對應的類,并把類信息放入方法區。
  • 加載所需的類后,JVM在堆區中為實例對象分配內存,并調用構造函數初始化實例。(該實例有指向方法區對應類的類信息的引用)
  • 當調用實例的方法時,JVM由對象引用找到堆中的對象,再由對象持有的引用定位到方法區中類的類型信息的方法表,從而獲得待調用函數的字節碼的地址。
  • 開始執行調用的函數。
     

注:

  • public和protected的實例方法采用動態綁定機制:要用到方法表。
  • private,static,構造器和初始化方法采用靜態綁定機制:不需要方法表。

關于Java程序運行整體流程是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武川县| 青阳县| 泾阳县| 昌平区| 山阴县| 静宁县| 朝阳市| 漳州市| 昔阳县| 哈尔滨市| 马尔康县| 斗六市| 洛浦县| 鹤岗市| 怀来县| 桂阳县| 黑河市| 林芝县| 肥西县| 宾川县| 江都市| 巩义市| 台东市| 寿光市| 闻喜县| 芦溪县| 墨竹工卡县| 永新县| 美姑县| 四子王旗| 霍州市| 观塘区| 唐海县| 象州县| 若尔盖县| 图们市| 瑞安市| 收藏| 兴山县| 中牟县| 南宫市|