国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【譯】JVM框架說明

tracymac7 / 1300人閱讀

摘要:框架說明開發者都知道會執行字節碼。但是可能大多數人都不知道一個事實是的實現,它分析字節碼,解釋并執行代碼。執行引擎字節碼加載到運行時數據區后,會被執行引擎執行。解釋器更快的解釋字節碼,但是執行非常慢。垃圾收集收集并移除不再被使用的對象。

JVM框架說明

java開發者都知道JRE(Java Runtime Environment)會執行字節碼。但是可能大多數人都不知道一個事實:JRE是JVM的實現,它分析字節碼,解釋并執行代碼。作為一個開發者,了解JVM的架構是非常重要的,這會讓我們寫的代碼更有效率。本文會深入學習JVM架構和它的各個重要組件。

什么是JVM

虛擬機是物理機器的軟件實現。JAVA被設計成WORA(Write Once Run Anywhere), java程序是運行在虛擬機上的。編譯器將java文件編譯成.class文件,然后將.class文件載入到JVM,這一步會加載和執行class文件。下面的圖是展示了JVM的架構。

JVM 架構圖

JVM如何工作

如上圖所示,jvm主要分成三個子系統

類加載系統

運行時數據區

執行引擎

類加載系統

java的動態類加載功能在類加載子系統中實現。當第一次在運行時(不是在編譯時)涉及到一個class時,它會加載,鏈接并初始化類文件。

加載:類會通過這個組件加載。根加載器(rt.jar),擴展加載器(jrelibext)和系統加載器(classpath下的)是其主要的工具。

鏈接:主要分層三步

檢查:判斷其字節碼是否符合虛擬器要求

準備:分配靜態變量的空間,同時賦缺省值

解析:解析符號鏈接,鏈接到方法區的引用上去。

初始化:給靜態變量賦初值,并執行靜態代碼區

運行時數據區

運行時數據區分成5個組件

方法區:保存所有類數據,包括靜態變量。一個jvm對應一個方法區。

堆 :保存所有的對象,對象中的變量以及數組。一個jvm對應一個堆。因為多個線程共享一個方法區和堆,所以數據保存不是線程安全的。

棧:每一個線程都會創建一個運行時的棧。對于每一個方法調用,都會在棧中創建一個棧幀。棧中保存了所有的本地變量。棧是線程安全的,因為它是線程獨享資源。

PC寄存器:每個線程有一個PC寄存器,用來記錄當前執行指令的地址,當一條指令執行完畢,它就會指向下一條指令。

本地方法棧:保存了本地方法的信息,每個線程會創建自己的本地方法棧。

執行引擎

字節碼加載到運行時數據區后,會被執行引擎執行。執行引擎讀取字節碼文件,逐個執行。

解釋器:更快的解釋字節碼,但是執行非常慢。其缺點是當多次調用一個方法時,每次都會創建新的解釋器。

JIT編譯器:JIT編譯器彌補了解釋器的缺點。執行引擎會使用解釋器來轉換字節碼,當發現重復的代碼時就會使用JIT編譯器,它會編譯整個字節碼,將之轉換為本地代碼,這個本地代碼會直接用于多次的方法調用,以此來改進系統的性能。

垃圾收集:收集并移除不再被使用的對象??梢酝ㄟ^代碼system.gc()來觸發垃圾收集,

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67720.html

相關文章

  • 初識Java(

    摘要:圖片含義如下源代碼程序編譯器編譯在執行字節碼編譯器會將源代碼編譯成字節碼在虛擬機上執行字節碼。字節碼只能在上執行。的構成要素的構成如下圖所示每一欄分別的含義如下源程序字節碼編譯調試程序等源代碼由開發者編寫。 源自Javaの道日語技術社區原文地址譯者 夢夢的幻想鄉見てくれてありがとうござい!??! はじめてのJava 初識Java 本章將會對Java的執行順序、Java的構成要素、Java...

    qqlcbb 評論0 收藏0
  • 那些年,我的前端/Java后端書單

    摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學習即將閱讀的一些優秀經典前端后端書籍。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學習、即將閱讀)的一些優秀經典前端/Java后端書籍。全文為純原創,且將持續更新,未經許可,不得進行轉載。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 基礎 基礎書籍 進階 進階階段,深入學習的書...

    fxp 評論0 收藏0
  • 那些年,我的前端/Java后端書單

    摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學習即將閱讀的一些優秀經典前端后端書籍。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學習、即將閱讀)的一些優秀經典前端/Java后端書籍。全文為純原創,且將持續更新,未經許可,不得進行轉載。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 基礎 基礎書籍 進階 進階階段,深入學習的書...

    Tecode 評論0 收藏0
  • 那些年,我的前端/Java后端書單

    摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學習即將閱讀的一些優秀經典前端后端書籍。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學習、即將閱讀)的一些優秀經典前端/Java后端書籍。全文為純原創,且將持續更新,未經許可,不得進行轉載。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 基礎 基礎書籍 進階 進階階段,深入學習的書...

    VPointer 評論0 收藏0
  • 那些年,我的前端/Java后端書單

    摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學習即將閱讀的一些優秀經典前端后端書籍。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學習、即將閱讀)的一些優秀經典前端/Java后端書籍。全文為純原創,且將持續更新,未經許可,不得進行轉載。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 基礎 基礎書籍 進階 進階階段,深入學習的書...

    idealcn 評論0 收藏0

發表評論

0條評論

tracymac7

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<