久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > Java 并發(fā)編程解析 | Java 程序編譯過程

Java 并發(fā)編程解析 | Java 程序編譯過程

來源:千鋒教育
發(fā)布人:qyf
時間: 2022-08-03 14:59:00 1659509940

1

  在 HotSpot 里面,上述翻譯過程有兩種形式:

  第一種是解釋執(zhí)行,即逐條將字節(jié)碼翻譯成機(jī)器碼并執(zhí)行;

  第二種是即時編譯(Just-In-Time compilation,JIT),即將一個方法中包含的所有字節(jié)碼編譯成機(jī)器碼后再執(zhí)行。

  前者的優(yōu)勢在于無需等待編譯,而后者的優(yōu)勢在于實際運(yùn)行速度更快。HotSpot 默認(rèn)采用混合模式,綜合了解釋執(zhí)行和即時編譯兩者的優(yōu)點(diǎn)。它會先解釋執(zhí)行字節(jié)碼,而后將其中反復(fù)執(zhí)行的熱點(diǎn)代碼,以方法為單位進(jìn)行即時編譯。

  HotSpot 采用了多種技術(shù)來提升啟動性能以及峰值性能,剛剛提到的即時編譯便是其中最重要的技術(shù)之一。

  即時編譯建立在程序符合二八定律的假設(shè)上,也就是百分之二十的代碼占據(jù)了百分之八十的計算資源。

  對于占據(jù)大部分的不常用的代碼,我們無需耗費(fèi)時間將其編譯成機(jī)器碼,而是采取解釋執(zhí)行的方式運(yùn)行;另一方面,對于僅占據(jù)小部分的熱點(diǎn)代碼,我們則可以將其編譯成機(jī)器碼,以達(dá)到理想的運(yùn)行速度。

  理論上講,即時編譯后的 Java 程序的執(zhí)行效率,是可能超過 C++ 程序的。這是因為與靜態(tài)編譯相比,即時編譯擁有程序的運(yùn)行時信息,并且能夠根據(jù)這個信息做出相應(yīng)的優(yōu)化。

  舉個例子,我們知道虛方法是用來實現(xiàn)面向?qū)ο笳Z言多態(tài)性的。對于一個虛方法調(diào)用,盡管它有很多個目標(biāo)方法,但在實際運(yùn)行過程中它可能只調(diào)用其中的一個。這個信息便可以被即時編譯器所利用,來規(guī)避虛方法調(diào)用的開銷,從而達(dá)到比靜態(tài)編譯的 C++ 程序更高的性能。

  為了滿足不同用戶場景的需要,HotSpot 內(nèi)置了多個即時編譯器:C1、C2 和 Graal。

  Graal 是 Java 10 正式引入的實驗性即時編譯器,在專欄的第四部分我會詳細(xì)介紹,這里暫不做討論。之所以引入多個即時編譯器,是為了在編譯時間和生成代碼的執(zhí)行效率之間進(jìn)行取舍。

  C1 又叫做 Client 編譯器,面向的是對啟動性能有要求的客戶端 GUI 程序,采用的優(yōu)化手段相對簡單,因此編譯時間較短。

  C2 又叫做 Server 編譯器,面向的是對峰值性能有要求的服務(wù)器端程序,采用的優(yōu)化手段相對復(fù)雜,因此編譯時間較長,但同時生成代碼的執(zhí)行效率較高。

  從 Java 7 開始,HotSpot 默認(rèn)采用分層編譯的方式:熱點(diǎn)方法首先會被 C1 編譯,而后熱點(diǎn)方法中的熱點(diǎn)會進(jìn)一步被 C2 編譯。

  為了不干擾應(yīng)用的正常運(yùn)行,HotSpot 的即時編譯是放在額外的編譯線程中進(jìn)行的。HotSpot 會根據(jù) CPU 的數(shù)量設(shè)置編譯線程的數(shù)目,并且按 1:2 的比例配置給 C1 及 C2 編譯器。

  在計算資源充足的情況下,字節(jié)碼的解釋執(zhí)行和即時編譯可同時進(jìn)行。編譯完成后的機(jī)器碼會在下次調(diào)用該方法時啟用,以替換原本的解釋執(zhí)行。

  更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗,課程大綱更科學(xué)更專業(yè),有針對零基礎(chǔ)的就業(yè)班,有針對想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實現(xiàn)java程序員夢想。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
服務(wù)器為什么要用Linux?

服務(wù)器為什么要用Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,Linux在眾多選擇中脫穎而出。Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,有其獨(dú)特的優(yōu)勢和特點(diǎn)。包括其...詳情>>

2023-10-14 12:34:11
ORM解決的主要問題是什么?

ORM(對象關(guān)系映射)解決的主要問題是將關(guān)系數(shù)據(jù)庫與面向?qū)ο缶幊讨g的映射困境。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)以表格的形式存儲,而在面向?qū)ο?..詳情>>

2023-10-14 12:26:19
Go為什么不支持三元運(yùn)算符?

Go為什么不支持三元運(yùn)算符Go語言是一種以簡潔和有效性為目標(biāo)的編程語言,因此在設(shè)計過程中,Go的設(shè)計者刻意排除了一些他們認(rèn)為可能導(dǎo)致復(fù)雜性或...詳情>>

2023-10-14 12:12:36
IT通常說的平臺是什么意思?

在信息技術(shù)(IT)領(lǐng)域,”平臺”這個詞有著廣泛的含義,它常常指代支持軟件應(yīng)用開發(fā)和運(yùn)行的基礎(chǔ)框架和環(huán)境。以下是對”平臺”這個概念的更深入...詳情>>

2023-10-14 11:55:36
什么是PowerPivot?

什么是PowerPivotPowerPivot,全稱”PowerPivot for Excel”,是Microsoft提供的一種數(shù)據(jù)分析工具,可以作為Excel的插件使用。通過PowerPivot,...詳情>>

2023-10-14 11:25:48