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

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

我們一起聊聊 JVM 是如何執(zhí)行Java程序的

來源: 責編: 時間:2024-09-10 09:42:15 167觀看
導讀前言如果你對JVM一知半解,如果你想了解JVM的工作流程,如果你知道一些JVM面試題卻無法將知識點串聯(lián)起來,那么這篇文章非常適合你。從面試題說起這些面試題Javaer們應該都很熟悉,但是你知道這些面試題的背后嗎?你知道類加載

前言

如果你對JVM一知半解,如果你想了解JVM的工作流程,如果你知道一些JVM面試題卻無法將知識點串聯(lián)起來,那么這篇文章非常適合你。iMQ28資訊網(wǎng)——每日最新資訊28at.com

從面試題說起

這些面試題Javaer們應該都很熟悉,但是你知道這些面試題的背后嗎?iMQ28資訊網(wǎng)——每日最新資訊28at.com

  • 你知道類加載機制嗎?
  • 什么是雙親委派機制?
  • 介紹一下JVM內(nèi)存區(qū)域劃分
  • 堆為什么要分代設計?
  • 什么是內(nèi)存的擔保機制?
  • 為什么Eden:S0:S1 比例是8:1:1?
  • 描述一下對象內(nèi)存分配過程
  • 如何判斷對象已死?
  • 講一講內(nèi)存模型?
  • 常用的JVM調優(yōu)參數(shù)有哪些?
  • 常用的垃圾回收算法有哪些?
  • 常用的垃圾收集器有哪些?
  • ......

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

如果你總是背了又忘,忘了又背,歸根結底,還是對JVM沒有一個系統(tǒng)的認識。iMQ28資訊網(wǎng)——每日最新資訊28at.com

那么希望通過這篇文章,可以為你構建一個連貫的JVM框架。iMQ28資訊網(wǎng)——每日最新資訊28at.com

JVM做了哪些事?

眾所周知,高級編程語言編寫的程序,最終要轉化為機器碼,才可以在計算機上運行。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

“翻譯”的工作

我們在編寫完一段Java代碼后,如果想要運行它,需要通過Java編譯器,將其編譯為JVM認識的字節(jié)碼文件。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

然后執(zhí)行Java命令,這段代碼就會通過JVM運行。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

不僅僅“翻譯”

在這個過程中,JVM就充當了轉換的角色,負責將字節(jié)碼,翻譯成對應平臺上的機器指令。這樣的話,Java程序就可以在任何安裝了JVM的平臺上運行。這就是Java語言一次編寫到處運行的跨平臺特性。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

翻譯字節(jié)碼的工作,是由JVM的執(zhí)行引擎完成。iMQ28資訊網(wǎng)——每日最新資訊28at.com

在將字節(jié)碼翻譯為機器指令之前,JVM還有一個非常重要的工作,那就是將字節(jié)碼文件中的二進制數(shù)據(jù)準確的加載到JVM中。這個工作是由JVM的類加載系統(tǒng)完成,iMQ28資訊網(wǎng)——每日最新資訊28at.com

另外,為了在運行時方便管理內(nèi)存,JVM定義了一個專門的區(qū)域,也就是大名鼎鼎的運行時數(shù)據(jù)區(qū)。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

所以,類加載系統(tǒng)、運行時數(shù)據(jù)區(qū)、執(zhí)行引擎,就構成了JVM平臺。iMQ28資訊網(wǎng)——每日最新資訊28at.com

接下來,看一下它們是如何工作的。iMQ28資訊網(wǎng)——每日最新資訊28at.com

在這之前,要對字節(jié)碼現(xiàn)有一個認識,畢竟它貫穿了Java代碼運行的整個流程。iMQ28資訊網(wǎng)——每日最新資訊28at.com

iMQ28資訊網(wǎng)——每日最新資訊28at.com

Java虛擬機對Java編程語言一無所知,只知道一種特定的二進制格式,即類文件格式。類文件包含Java虛擬機指令(或字節(jié)碼)和符號表,以及其他輔助信息。iMQ28資訊網(wǎng)——每日最新資訊28at.com

JVM 各部件如何協(xié)同工作?

類加載器先工作

iMQ28資訊網(wǎng)——每日最新資訊28at.com

類加載系統(tǒng)目的很明確,就是將字節(jié)碼文件中的二進制數(shù)據(jù)準確地加載到JVM,從Class文件加載到內(nèi)存 & 對數(shù)據(jù)進行校驗、轉換解析和初始化,最終形成可被虛擬機直接使用的Java使用類型iMQ28資訊網(wǎng)——每日最新資訊28at.com

執(zhí)行Java命令后,Java虛擬機啟動,類加載系統(tǒng)就開始工作了。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

類加載系統(tǒng)首先會讀取指定的類文件,并遵循雙親委派機制進行加載。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

然后將文件中的常量池、字段、方法和指令等數(shù)據(jù)加載到JVM內(nèi)存的共享區(qū)域方法區(qū)中。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

然后對其進行驗證,目的是為了確保類的正確性。比如版本號為52或更高時,不應該存在這個版本不支持的指令。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

或者標識類文件的魔術數(shù)字是不是cafebabe,這些完整性的檢查和約束都是非常有必要,就像我們自己開發(fā)的應用,也不可能隨便讓別人訪問一樣。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

驗證完成后,在方法區(qū)為類的靜態(tài)變量分配內(nèi)存并設置默認值。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

緊接著,將常量池中表示對象的符號引用,指向到實際的內(nèi)存地址,也就是直接引用。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

iMQ28資訊網(wǎng)——每日最新資訊28at.com

什么是符號引用呢?iMQ28資訊網(wǎng)——每日最新資訊28at.com

符號引用是常量池中的類、方法、字段等指向的目標在字節(jié)碼文件中的靜態(tài)表示,當JVM運行時,需要將目標的靜態(tài)表示轉換成實際的內(nèi)存指針,也就是直接引用。在這個例子中,如果JVM需要加載Object這個類,它會查找常量池中的#3(Class類型,指向#27),然后解析#27中的字符串java/lang/Object/為實際的類文件路徑,并加載這個類。iMQ28資訊網(wǎng)——每日最新資訊28at.com

最后執(zhí)行靜態(tài)代碼塊,為靜態(tài)變量設置初始值,類加載工作就算完成了。iMQ28資訊網(wǎng)——每日最新資訊28at.com

整個加載過程就是面試被經(jīng)常問到的類加載機制。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

那么問題來了:靜態(tài)變量為什么要先設置默認值,再設置初始值,知道的評論區(qū)留言。iMQ28資訊網(wǎng)——每日最新資訊28at.com

執(zhí)行引擎開始工作

執(zhí)行引擎工作模式

靜態(tài)代碼塊被執(zhí)行時,執(zhí)行引擎就會處理這些指令。執(zhí)行引擎有兩種工作模式:iMQ28資訊網(wǎng)——每日最新資訊28at.com

  • 解釋執(zhí)行
  • 即時編譯

解釋執(zhí)行就是每次執(zhí)行都會逐行解釋字節(jié)碼指令iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

即時編譯是將熱點代碼,編譯成當前平臺的機器碼,并緩存下次就可以直接執(zhí)行機器碼,這樣就可以提高執(zhí)行效率。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

iMQ28資訊網(wǎng)——每日最新資訊28at.com

JVM通常采用解釋器與即時編譯器并存的混合模式。在程序啟動時,解釋器可以立即發(fā)揮作用,省去編譯時間;隨著程序運行時間的推移,JIT編譯器逐漸發(fā)揮作用,將越來越多的熱點代碼編譯為本地機器碼,以提高執(zhí)行效率。iMQ28資訊網(wǎng)——每日最新資訊28at.com

Main方法什么時候被執(zhí)行?

靜態(tài)代碼塊執(zhí)行完成后,JVM會繼續(xù)調用main方法。如果執(zhí)行Java命令的字節(jié)碼文件中沒有main方法,JVM就會報錯,這個是JVM規(guī)范。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

運行時數(shù)據(jù)區(qū)域開始工作

執(zhí)行引擎工作期間,會和運行時數(shù)據(jù)區(qū)域有大量的交互。iMQ28資訊網(wǎng)——每日最新資訊28at.com

線程私有的空間

調用main方法時,會創(chuàng)建一個線程并在運行時數(shù)據(jù)區(qū)中分配線程私有的空間:棧幀以及程序計數(shù)器。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

程序計數(shù)器初始時會指向第一條指令, 然后隨著指令的執(zhí)行而遞增。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

執(zhí)行靜態(tài)變量賦值的指令時,會把整數(shù)推送到棧幀中的操作數(shù)棧,隨后賦值給靜態(tài)變量。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

在執(zhí)行創(chuàng)建一個Object實例的指令時,如果Object Class未被加載,類加載器會啟動加載過程。然后在堆中分配一塊內(nèi)存并初始化實例。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

大名鼎鼎的堆內(nèi)存

分配內(nèi)存這個過程,就涉及到“堆內(nèi)存分代設計”、“對象內(nèi)存分配過程”、“內(nèi)存分配方式”等知識點了。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

如果對象過多導致空間不足,JVM就會通過垃圾回收來釋放一些空間。“如何確定對象是垃圾”、“使用哪個垃圾回收器”、“用了什么回收算法”就需要我們?nèi)チ私狻?span style="display:none">iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

實例初始化后,會將對象的引用存儲到局部變量表中。這樣的話,線程就可以通過引用訪問到該對象。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片iMQ28資訊網(wǎng)——每日最新資訊28at.com

就這么一直工作

后續(xù)的代碼會延續(xù)這個流程,該加載類的加載類、該翻譯指令的翻譯、該分配內(nèi)存的分配、該回收垃圾的回收,直到Java虛擬機停止工作。iMQ28資訊網(wǎng)——每日最新資訊28at.com

圖片 圖片 iMQ28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-112701-0.html我們一起聊聊 JVM 是如何執(zhí)行Java程序的

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

上一篇: 三年Golang碼農(nóng),竟然不知道New和Make有什么區(qū)別?

下一篇: Asp.Net Core實戰(zhàn)-Swagger接口文文檔

標簽:
  • 熱門焦點
  • MIX Fold3包裝盒泄露 新機本月登場

    小米的全新折疊屏旗艦MIX Fold3將于本月發(fā)布,近日該機的真機包裝盒在網(wǎng)上泄露。從圖上來看,新的MIX Fold3包裝盒在外觀設計方面延續(xù)了之前的方案,變化不大,這也是目前小米旗艦
  • Automa-通過連接塊來自動化你的瀏覽器

    1、前言通過瀏覽器插件可實現(xiàn)自動化腳本的錄制與編寫,具有代表性的工具就是:Selenium IDE、Katalon Recorder,對于簡單的業(yè)務來說可快速實現(xiàn)自動化的上手工作。Selenium IDEKat
  • 得物效率前端微應用推進過程與思考

    一、背景效率工程隨著業(yè)務的發(fā)展,組織規(guī)模的擴大,越來越多的企業(yè)開始意識到協(xié)作效率對于企業(yè)團隊的重要性,甚至是決定其在某個行業(yè)競爭中突圍的關鍵,是企業(yè)長久生存的根本。得物
  • 如何使用JavaScript創(chuàng)建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經(jīng)瀏覽過購物網(wǎng)站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區(qū)域,以便瀏覽。結合這個小小的重要功能可以大大改善您網(wǎng)站的用戶體驗
  • 只需五步,使用start.spring.io快速入門Spring編程

    步驟1打開https://start.spring.io/,按照屏幕截圖中的內(nèi)容創(chuàng)建項目,添加 Spring Web 依賴項,并單擊“生成”按鈕下載 .zip 文件,為下一步做準備。請在進入步驟2之前進行解壓。圖
  • 小紅書1周漲粉49W+,我總結了小白可以用的N條漲粉筆記

    作者:黃河懂運營一條性教育視頻,被54萬人“珍藏”是什么體驗?最近,情感博主@公主是用鮮花做的,火了!僅僅憑借一條視頻,光小紅書就有超過128萬人,為她瘋狂點贊!更瘋狂的是,這
  • 華為HarmonyOS 4升級計劃公布:首批34款機型今日開啟公測

    8月4日消息,今天下午華為正式發(fā)布了HarmonyOS 4系統(tǒng),在更流暢的前提下,還帶來了不少新功能,UI設計也有變化,會讓手機煥然一新。華為宣布,首批機型將會在
  • 華為Mate60系列模具曝光:采用碩大圓形后置相機模組+拼接配色方案

    據(jù)此前多方爆料,今年華為將開始恢復一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將迎來更新,有望在9-10月份帶來全新的華為Mate60
  • 三星顯示已開始為AR設備研發(fā)硅基LED微顯示屏

    7月18日消息,據(jù)外媒報道,隨著蘋果首款頭顯產(chǎn)品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產(chǎn)品也就將成為各大公司下一個重要的競爭領域,對顯示屏這一關
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产日产高清欧美一区二区三区| 欧美多人爱爱视频网站| 日韩视频免费| 亚洲作爱视频| 亚洲一区二区三区在线| 久久黄金**| 久热精品视频| 欧美日韩亚洲免费| 国产女主播一区二区| 雨宫琴音一区二区在线| 日韩亚洲视频在线| 午夜影视日本亚洲欧洲精品| 久久综合久久综合久久综合| 欧美日韩免费看| 国产一区二区日韩精品欧美精品 | 国产精品久久久久9999高清 | 国产欧美一区二区在线观看| 激情久久一区| 一区二区动漫| 久久久最新网址| 欧美日韩综合精品| 一区二区三区在线视频免费观看 | 亚洲国产三级网| 欧美一区二区国产| 欧美区国产区| 国产综合在线看| 亚洲天堂av图片| 欧美成年人视频| 国产日韩视频| 日韩亚洲在线| 久久欧美中文字幕| 国产精品女人毛片| 亚洲国产成人av在线| 亚洲欧美日韩精品在线| 欧美顶级大胆免费视频| 国产一区二区三区久久久久久久久| 亚洲精品久久久久| 久久精品成人欧美大片古装| 欧美激情一区二区三区在线| 国产日韩在线一区二区三区| 99精品视频免费观看| 久久影院午夜片一区| 国产精品狠色婷| 亚洲精品一二三| 另类天堂视频在线观看| 国产精品一区二区三区久久| 亚洲精品影院| 免费观看30秒视频久久| 国产欧美一区二区色老头| 一个色综合导航| 欧美激情女人20p| 激情国产一区| 欧美一区二区三区四区在线观看| 欧美日韩成人| 亚洲高清成人| 久久久久国产一区二区三区四区| 国产精品九九久久久久久久| 亚洲人成在线观看一区二区| 久久精品最新地址| 国产一区二区欧美| 午夜在线精品偷拍| 欧美视频在线观看一区二区| 亚洲毛片视频| 欧美电影免费观看高清完整版| 在线精品国产成人综合| 久久久久久综合| 国产一区二区三区四区老人| 欧美亚洲日本网站| 国产精品私房写真福利视频| 亚洲午夜av电影| 欧美日韩一区二区三区在线 | 欧美高清在线一区二区| 亚洲丶国产丶欧美一区二区三区| 久久精品国产亚洲一区二区| 国产亚洲欧美另类一区二区三区| 亚洲欧美成人| 国产精品久线观看视频| 亚洲一区二区三区四区五区黄| 欧美午夜电影完整版| 亚洲视屏一区| 国产精品伦一区| 亚洲欧美日韩系列| 国产精品综合网站| 亚洲欧美在线播放| 国产欧美精品在线观看| 性色av一区二区三区| 国产亚洲制服色| 久久久久久国产精品mv| 精品电影在线观看| 欧美大片在线看免费观看| 亚洲另类春色国产| 欧美日韩一区免费| 亚洲伊人色欲综合网| 国产精品羞羞答答xxdd| 欧美一区二区久久久| 国产在线播放一区二区三区| 久久久久久成人| 亚洲高清免费| 欧美日韩高清在线观看| 亚洲一区二区三区在线| 国产午夜精品久久| 久久综合网色—综合色88| 亚洲国产另类 国产精品国产免费| 欧美成人免费全部| 9l国产精品久久久久麻豆| 欧美午夜精品理论片a级按摩| 亚洲欧美日韩一区二区三区在线观看| 国产美女精品视频免费观看| 久久精品午夜| 最新高清无码专区| 欧美日韩黄视频| 午夜精品理论片| 伊人婷婷欧美激情| 欧美日韩ab片| 欧美一级黄色网| 亚洲二区精品| 欧美亚洲第一区| 久久精品一区四区| 91久久在线观看| 国产精品日本一区二区| 久久久久久尹人网香蕉| 亚洲精品免费在线| 国产乱码精品一区二区三区忘忧草| 久久久999| 亚洲精品四区| 国产美女精品视频| 欧美成人在线免费观看| 亚洲一区二区三区高清| 黑人巨大精品欧美黑白配亚洲 | 欧美精品网站| 欧美一级免费视频| 亚洲区一区二区三区| 国产精品日本精品| 免费试看一区| 亚洲在线日韩| 亚洲高清在线观看| 国产精品日韩专区| 免费成人黄色av| 亚洲影院免费| 91久久久久久久久| 国产欧美1区2区3区| 欧美成人综合| 欧美在线观看天堂一区二区三区| 亚洲品质自拍| 国语自产偷拍精品视频偷| 欧美日韩综合在线| 久久亚洲精品一区| 亚洲欧美国产视频| 亚洲精品日本| 狠狠色伊人亚洲综合网站色| 欧美性色综合| 欧美激情视频一区二区三区免费| 欧美一级欧美一级在线播放| 亚洲精品美女免费| 国内久久精品| 国产精品久久久久久久久免费樱桃| 鲁鲁狠狠狠7777一区二区| 亚洲你懂的在线视频| 亚洲另类自拍| 亚洲第一页在线| 国产亚洲一区在线| 国产精品成人v| 欧美精品久久99久久在免费线| 久久精品九九| 亚洲欧美三级在线| 一本色道久久综合亚洲精品按摩| 影音先锋中文字幕一区| 国产欧美精品一区| 欧美日韩综合在线| 欧美激情va永久在线播放| 久久精品网址| 欧美在线免费看| 亚洲视频自拍偷拍| 日韩视频在线一区二区| 极品日韩久久| 国语自产精品视频在线看| 国产精品欧美日韩久久| 欧美日韩在线播放| 欧美日韩国产影片| 欧美国产在线电影| 免费视频最近日韩| 老司机凹凸av亚洲导航| 久久久久久久网| 久久成人亚洲| 欧美中文在线观看| 欧美怡红院视频| 亚洲欧美亚洲| 亚洲欧美日本国产有色| 在线亚洲免费视频| 99在线观看免费视频精品观看| 亚洲国产日韩欧美| 亚洲黑丝一区二区| 亚洲国产91精品在线观看| 在线电影院国产精品| 在线看国产一区| 亚洲国产成人久久| 亚洲国产综合在线| 亚洲国产清纯| 亚洲精品乱码久久久久久| 亚洲人精品午夜| 亚洲靠逼com| 这里只有精品在线播放| 中文一区二区在线观看| 亚洲一区成人|