第一章 Java代碼執行流程,第一章java

來源:互聯網
上載者:User

第一章 Java代碼執行流程,第一章java

說明:本文主要參考自《分布式Java應用:基礎與實踐》

 

1、Java代碼執行流程

  • 第一步:*.java-->*.class(編譯期)
  • 第二步:從*.class檔案將其中的內容載入到記憶體(類載入)(運行期)
  • 第三步:執行代碼(運行期)

 

2、代碼編譯

javac命令將源碼檔案編譯為*.class檔案。

後邊將介紹:

  • javac將*.java編譯成*.class檔案的過程
  • class檔案的檔案格式,以及其儲存的內容

 

3、類載入

主要是指將*.class檔案載入到JVM,並形成Class對象的機制,之後就可以對Class對象執行個體化並調用了。

特點:

  • 類載入機制可以在運行時動態載入外部類

後邊將介紹:

  • 類載入的過程
  • 類載入的雙親委託機制
  • 類載入器的層次關係及源碼

 

4、執行代碼

兩種執行方式:

  • 解釋執行(運行期解釋位元組碼並執行)
    • 速度慢,效率低
    • 但是要比編譯為機器碼執行省記憶體
  • 編譯為機器碼執行(將位元組碼編譯為機器碼並執行,這個編譯過程發生在運行期,稱為JIT編譯),下面是兩種模式
    • client(即C1):只做少量效能開銷比高的最佳化,佔用記憶體少,適用於傳統型程式,主要的最佳化包括:
      • 方法內聯
      • 去虛擬化
      • 冗餘消除
    • server(即C2):進行了大量最佳化,佔用記憶體多,適用於服務端程式。會收集大量的運行時資訊。
      • 逃逸分析:根據健全狀態來判斷方法中的變數是否會被外部讀取,若不會,此變數是逃逸的。基於此,C2在編譯時間會做:
        • 標量替換
        • 棧上分配
        • 同步削除
    • 32為機器預設選擇C1,可在啟動時添加-client或-server來指定,64位機器若CPU>2且實體記憶體>2G則預設為C2,否則為C1
  • Sun JDK執行代碼的機制:對在執行過程中執行頻率高的代碼進行編譯,對執行頻率不高的代碼繼續解釋執行

後邊將介紹:

  • Sun JDK執行代碼的過程
  • C1以及C2執行的一些最佳化
  • 編譯執行與解釋執行的使用的衡量點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.