日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Java是怎么運行起來的?深入理解Java虛擬機

來源: 責編: 時間:2023-09-25 10:39:30 413觀看
導讀Java虛擬機(JVM)是一個運行時環境,可以執行用Java編程語言編寫的程序。Java語言是一種高級語言,它通過抽象和封裝的機制,讓開發者可以專注于業務邏輯和功能實現,而不用關心底層的細節。因此,運行/開發Java程序時,不必深入了解

Java虛擬機(JVM)是一個運行時環境,可以執行用Java編程語言編寫的程序。Java語言是一種高級語言,它通過抽象和封裝的機制,讓開發者可以專注于業務邏輯和功能實現,而不用關心底層的細節。因此,運行/開發Java程序時,不必深入了解Java程序的執行過程或JVM的內部原理。對于大多數開發者來說,JVM就像一個神奇的盒子,能夠幫助他們實現功能和完成任務。0RR28資訊網——每日最新資訊28at.com

但是,了解JVM是如何支持Java語言和其他相關語言的,對于程序員來說是很有裨益的!0RR28資訊網——每日最新資訊28at.com

圖片0RR28資訊網——每日最新資訊28at.com

上面代碼會把一個給定的Java文件編譯成.class文件,其中包含bytecode。如果源代碼有錯誤,編譯會失敗并報出編譯錯誤。0RR28資訊網——每日最新資訊28at.com

你可以使用提供的工具javap來查看已創建的類文件,以了解類文件的內部情況。0RR28資訊網——每日最新資訊28at.com

javap HelloWorld.class

4. 執行

在通過編譯創建了.class文件之后,可以使用java語法來啟動一個JVM的實例,它會觸發一個包含多個復雜步驟的執行路徑,最終執行我們提供的代碼。0RR28資訊網——每日最新資訊28at.com

java HelloWorld

首先JVM需要獲取.class文件,并將它加載到JVM的內存區域中。這個初始過程是通過JVM類加載器來實現的。0RR28資訊網——每日最新資訊28at.com

5. 什么是類加載?

抽象地說,類加載就是掃描并遍歷提供的.class文件,并將類文件中的內容加載到JVM的內存區域中。然后,執行引擎就可以引用這些存儲的數據,繼續執行我們的代碼。0RR28資訊網——每日最新資訊28at.com

JVM中有三種類型的類加載器,分別是:0RR28資訊網——每日最新資訊28at.com

  • 引導類加載器
  • 擴展類加載器
  • 應用類加載器

引導類加載器的職責是加載基礎/核心的Java類,這些類對于Java程序運行是必不可少的。在早期的Java版本中,這些核心類被包含在位于jre/lib目錄下的rt.jar文件中,但在后來的Java版本中,rt.jar中的內容被分割成模塊化的組件。0RR28資訊網——每日最新資訊28at.com

擴展類加載器的職責是加載lib/ext目錄下的類,這些類可能包括我們在代碼中使用的任何擴展。0RR28資訊網——每日最新資訊28at.com

應用類加載器是三種中最常用的一種,它負責加載用戶定義的類。它會掃描我們程序的類路徑,并加載其中的類。0RR28資訊網——每日最新資訊28at.com

6. 類加載過程

類加載過程有兩個主要步驟:0RR28資訊網——每日最新資訊28at.com

  • 加載
  • 鏈接

7. 加載

在加載過程中,類加載器讀取類文件的二進制表示形式,即.class文件,并在JVM的運行時內存中創建它的表示。這個表示稱為Class Object,它位于JVM內存的方法區中。0RR28資訊網——每日最新資訊28at.com

8. 鏈接

在加載過程之后,開始鏈接。鏈接有三個步驟。0RR28資訊網——每日最新資訊28at.com

  • 驗證 — 確保類文件的正確性。驗證類是否符合Java規范。
  • 準備 — 為靜態塊/字段分配內存,并為靜態變量賦予默認值(不是初始值!)。
  • 解析 — 解析類文件中的(符號)引用。

0RR28資訊網——每日最新資訊28at.com

解析:0RR28資訊網——每日最新資訊28at.com

在鏈接的解析階段,類加載器會解析常量池表,這是一個位于.class文件/類對象中的實體,類似于一個符號表,指定了類中的字段/方法/引用。在類文件中,對其他類的引用是以符號方式表示的,沒有具體的內存地址來引用。解析會搜索JVM內存,并為那些符號引用分配具體的引用。如果在.class文件中發現了一個尚未加載的類,它會觸發該類本身的加載/鏈接過程,這可能會導致一個遞歸的加載和鏈接過程。0RR28資訊網——每日最新資訊28at.com

在字節碼加載和鏈接之后,類就成功地存儲在JVM內存中(將在后面的部分討論),并準備好初始化。0RR28資訊網——每日最新資訊28at.com

9. 初始化

當代碼中第一次用new關鍵字或靜態字段來引用一個類,或者當程序執行時遇到一個初始化類(比如Main類),則會觸發類文件的初始化。0RR28資訊網——每日最新資訊28at.com

在初始化階段,執行靜態塊,靜態變量被分配初始值。0RR28資訊網——每日最新資訊28at.com

10. 運行時內存區域

在上面的段落中,多次提到了將類文件數據存儲在JVM內存中。這些數據究竟存儲在哪里,來作為加載/鏈接/初始化的結果?答案是運行時內存區域。0RR28資訊網——每日最新資訊28at.com

JVM運行時內存區域是指定的內存空間,它被劃分為多個部分,用于存儲執行相關/類文件相關的數據。0RR28資訊網——每日最新資訊28at.com

運行時內存區的主要區域如下:0RR28資訊網——每日最新資訊28at.com

(1) 方法區0RR28資訊網——每日最新資訊28at.com

方法區是運行時內存的一部分,用于存儲與類文件相關的數據。運行時常量池、字段元數據、類元數據、方法元數據和字節碼本身等都存儲在方法區中。0RR28資訊網——每日最新資訊28at.com

(2) 程序計數器(PC)0RR28資訊網——每日最新資訊28at.com

程序計數器是一個小的內存區域,用于存儲當前正在執行的操作的地址,這是Java程序執行的必要信息。每個線程都有自己的PC。0RR28資訊網——每日最新資訊28at.com

(3) 堆0RR28資訊網——每日最新資訊28at.com

存儲所有的類/數組實例,是所有線程共享的一塊內存。0RR28資訊網——每日最新資訊28at.com

(4) JVM棧0RR28資訊網——每日最新資訊28at.com

保存局部變量和部分結果。包含棧幀。每個線程都有自己的JVM棧。0RR28資訊網——每日最新資訊28at.com

11. 棧幀

當一個方法被調用時,在棧中創建一個新的幀。它會存儲與該方法相關的局部變量和部分結果。如果在該方法內部調用了另一個方法,就會為新調用的方法創建一個新的棧幀。在給定線程中,一次只有一個幀是活動的。0RR28資訊網——每日最新資訊28at.com

12. 執行

在上面的部分中,簡要地介紹了Java源代碼是如何編譯并加載到JVM運行時內存區域中的。0RR28資訊網——每日最新資訊28at.com

接下來看看這些數據是如何執行的。0RR28資訊網——每日最新資訊28at.com

這部分過程是通過JVM的執行引擎來實現的,它由兩個主要部分組成:(執行引擎還包括許多其他組件,但在本文中不會提及。)0RR28資訊網——每日最新資訊28at.com

  • 解釋器
  • JIT(即時)編譯器

“Java作為一種編程語言,是一種混合的解釋和編譯語言,也就是說Java代碼既要經過編譯,又要經過解釋。簡單來說,當類文件開始運行時,JVM會先用解釋器直接執行字節碼,不需要編譯。這樣做的主要好處是可以提高啟動速度和執行速度(不用等待編譯過程)。0RR28資訊網——每日最新資訊28at.com

在解釋的過程中,JVM會發現代碼中的熱點和熱區,也就是經常執行或者可以優化的代碼段。這些代碼段會被JIT編譯器編譯成本地代碼,然后執行引擎會從解釋模式切換到執行模式。”0RR28資訊網——每日最新資訊28at.com

這個編譯過程有多個層次,稱為分層編譯。0RR28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-11280-0.htmlJava是怎么運行起來的?深入理解Java虛擬機

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 八個從Java 11到Java17中的功能提升

下一篇: Python中map函數的高級技巧:優化你的編程體驗

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美日本国产一区| 亚洲日本成人女熟在线观看| 欧美午夜免费| 国产精品成av人在线视午夜片| 国产精品国产自产拍高清av王其| 国产伦理一区| 国内精品一区二区三区| 91久久黄色| 制服丝袜亚洲播放| 久久激情一区| 欧美成人国产va精品日本一级| 欧美日韩久久精品| 亚洲欧美视频在线观看视频| 久久国产免费看| 欧美福利视频在线观看| 亚洲人成人99网站| 欧美国产免费| 国产午夜亚洲精品理论片色戒| 亚洲欧美国产高清| 欧美中在线观看| 欧美成人一区二区三区在线观看 | 欧美日韩视频免费播放| 欧美视频三区在线播放| 一本大道久久a久久综合婷婷 | 亚洲伊人第一页| 欧美成人xxx| 亚洲第一页自拍| 久久精品国产77777蜜臀| 一区二区三区毛片| 欧美1级日本1级| 国产曰批免费观看久久久| 欧美日韩日日骚| 欧美一区二区三区另类 | 最新成人在线| 欧美日韩在线一区| 亚洲国产精彩中文乱码av在线播放| 在线亚洲精品| 国产精品麻豆va在线播放 | 日韩一级成人av| 在线播放日韩| 国产日韩成人精品| 国产精品福利影院| 国产精品久久婷婷六月丁香| 一本一本久久a久久精品综合麻豆| 国产在线欧美| 亚洲小视频在线观看| 久久精品系列| 国产精品成人免费| 亚洲精品一区二区网址| 久久久免费精品| 国产精品嫩草影院一区二区| 亚洲另类在线视频| 美女黄毛**国产精品啪啪| 国产美女精品人人做人人爽| 亚洲乱码国产乱码精品精98午夜| 久久久久久自在自线| 国产精品免费视频xxxx| 99精品国产高清一区二区| 久久综合久久久| 国产色产综合产在线视频| 亚洲曰本av电影| 欧美片网站免费| 亚洲国产合集| 久久三级视频| 国产一区二区精品久久99| 亚洲欧美清纯在线制服| 欧美午夜精品| 99在线精品观看| 欧美日韩国产精品成人| 亚洲黄色天堂| 欧美成人影音| 尤妮丝一区二区裸体视频| 久久久久国产精品一区| 国产主播一区二区三区四区| 久久成人av少妇免费| 国产情人综合久久777777| 亚洲欧美日韩综合国产aⅴ| 欧美性猛交视频| 一区二区日韩伦理片| 欧美日韩成人精品| 日韩午夜免费视频| 欧美另类视频| 日韩视频在线观看一区二区| 欧美日本乱大交xxxxx| 亚洲精品中文字幕在线观看| 欧美精品激情| 日韩亚洲不卡在线| 欧美日韩亚洲91| 亚洲网站啪啪| 国产精品夜色7777狼人 | 久久色在线播放| 伊人久久大香线蕉综合热线| 久久欧美肥婆一二区| 激情一区二区三区| 久久亚洲一区二区| 在线日韩一区二区| 欧美福利视频在线| 日韩一区二区精品| 国产精品国产三级国产普通话蜜臀| 亚洲午夜在线视频| 国产精品亚洲激情| 久久精品免费播放| 亚洲国产成人一区| 欧美日本在线看| 一本久道久久综合狠狠爱| 国产精品久久久久久久久| 亚洲在线播放| 国内精品视频在线播放| 免播放器亚洲一区| 99国产精品视频免费观看| 国产精品h在线观看| 欧美亚洲免费| 一区二区亚洲精品国产| 欧美不卡视频一区发布| 夜夜爽av福利精品导航| 国产精品中文在线| 久久精品国产亚洲a| 亚洲高清成人| 欧美日韩四区| 欧美一区二区三区视频在线| 一区二区在线观看av| 欧美日本国产精品| 亚洲欧美伊人| 国内精品久久久久久影视8 | 久久国产成人| 亚洲破处大片| 欧美日韩亚洲一区| 久久精品成人欧美大片古装| 亚洲人成在线观看一区二区| 国产精品毛片一区二区三区| 久久久久久久久久久一区| 91久久国产自产拍夜夜嗨| 国产精品乱码久久久久久| 久久久久中文| 一本在线高清不卡dvd| 国产午夜久久久久| 欧美屁股在线| 欧美一区二区三区视频| 91久久国产综合久久蜜月精品| 国产精品久久一卡二卡| 久久综合给合久久狠狠狠97色69| 一二三区精品| 伊人狠狠色丁香综合尤物| 欧美日韩综合网| 久久午夜电影| 亚洲视频在线观看视频| 一区视频在线| 国产精品免费一区二区三区观看| 蜜桃久久av一区| 午夜亚洲激情| 亚洲精品在线三区| 国产主播一区| 欧美四级伦理在线| 免费成人黄色片| 午夜视频精品| 99精品国产99久久久久久福利| 激情文学综合丁香| 国产精品久久久久一区二区三区共| 免费观看成人| 久久精品123| 亚洲一二三区在线| 亚洲黄色在线观看| 国内偷自视频区视频综合| 国产精品成人在线观看| 欧美成人小视频| 久久青草久久| 亚洲欧美制服另类日韩| 99这里有精品| 亚洲国产精品一区二区第四页av| 国产日韩欧美a| 欧美日韩一区二区三区高清| 免费看的黄色欧美网站| 欧美在线免费| 亚洲专区一区| 日韩视频在线免费| 亚洲国产三级在线| 国内一区二区三区| 国产噜噜噜噜噜久久久久久久久| 欧美亚州韩日在线看免费版国语版| 欧美电影免费观看网站| 久久色在线播放| 久久精品伊人| 欧美在线免费视频| 亚洲欧美日韩精品在线| 一区二区三区四区国产| 亚洲乱码国产乱码精品精| 一区二区视频在线观看| 韩国成人精品a∨在线观看| 国产麻豆视频精品| 国产精品高潮在线| 欧美日韩一级片在线观看| 欧美黄网免费在线观看| 久久亚洲视频| 久久人人爽人人| 久久手机精品视频| 久久久久久久网| 欧美一区二区在线观看| 午夜精品久久久久久99热软件| 亚洲视频欧美视频| 亚洲视频一区二区| 亚洲午夜激情| 亚洲一区二区在线免费观看| 亚洲性感美女99在线| 国产精品99久久久久久有的能看|