真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么優(yōu)化JIT

本篇內(nèi)容介紹了“怎么優(yōu)化JIT”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、東山網(wǎng)絡(luò)推廣、小程序制作、東山網(wǎng)絡(luò)營(yíng)銷(xiāo)、東山企業(yè)策劃、東山品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供東山建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com

什么是JIT

JIT 是 just in time 的縮寫(xiě), 也就是即時(shí)編譯編譯器。

在運(yùn)行時(shí) JIT 會(huì)把翻譯過(guò)的機(jī)器碼保存起來(lái),以備下次使用,因此從理論上來(lái)說(shuō),采用該 JIT 技術(shù)可以接近以前純編譯技術(shù)。下面我們看看,JIT 的工作過(guò)程。

怎么優(yōu)化JIT

備注:寄存器的使用是編譯器的一個(gè)非常普遍的優(yōu)化。寄存器的速度比主存快很多。

怎么優(yōu)化JIT編譯

  • 初級(jí)調(diào)優(yōu):客戶模式或服務(wù)器模式

  • 中級(jí)編譯器調(diào)優(yōu) (-cient,-server 或是-xx:+TieredCompilation)

    • 優(yōu)化代碼緩存 (–XX:ReservedCodeCacheSize)

    • 編譯閾值 (-XX:CompileThreshold)

    • 檢查編譯過(guò)程 (XX:+PrintCompilation)

  • 高級(jí)編譯器調(diào)優(yōu)

    • 編譯線程 (-XX:CICompilerCount)

從優(yōu)化的角度講,最簡(jiǎn)單的選擇就是使用 server 編譯器的分層編譯技術(shù),這將解決大約 90%左右的與編譯器直接相關(guān)的性能問(wèn)題。最后,請(qǐng)保證代碼緩存的大小設(shè)置的足夠大,這樣編譯器將會(huì)提供最高的編譯性能。

HotSpot中的JIT編譯器

1.1 編譯器和解釋器

HotSpot中有編譯器和解釋器并存。

HotSpot中內(nèi)置兩個(gè)JIT編譯器:

JVM根據(jù)自身版本和機(jī)器硬件性能自動(dòng)選擇

  • Client Compiler,簡(jiǎn)稱C1,-client參數(shù)強(qiáng)制

  • Server Compiler,簡(jiǎn)稱C2, -server參數(shù)強(qiáng)制

解釋器和編譯器搭配使用成為混合模式(Mixed Mode)

  • 用-Xint參數(shù)強(qiáng)制JVM運(yùn)行與解釋模式,全部用解釋方式,編譯器不介入

  • 用-Xcomp強(qiáng)制JVM運(yùn)行于編譯模式,優(yōu)先采用編譯方式

分層編譯:根據(jù)比那一起編譯,優(yōu)化的規(guī)模耗時(shí),劃分出不同的編譯層次

  • 第0層,程序解釋執(zhí)行,解釋器不開(kāi)啟性能監(jiān)測(cè)功能,觸發(fā)第一層編譯

  • 第1層,也叫C1編譯,將字節(jié)碼編譯為本地代碼,進(jìn)行簡(jiǎn)單, 可靠的優(yōu)化,如有必要,加入性能監(jiān)測(cè)的邏輯

  • 第2層(或者2層以上),也叫C2編譯,將字節(jié)碼比那一位本地代碼,但會(huì)開(kāi)啟一些編譯耗時(shí)較長(zhǎng)的優(yōu)化,甚至根據(jù)性能監(jiān)控信息進(jìn)行一些不可靠的激進(jìn)優(yōu)化

分層編譯后,Client Compiler和Server Compiler將會(huì)同時(shí)工作,代碼可能會(huì)被多次編譯,用Client獲得更高的編譯速度,用Server獲得更好的編譯質(zhì)量,解釋執(zhí)行的時(shí)候無(wú)需搜集性能監(jiān)控信息

1.2 編譯對(duì)象和觸發(fā)條件

熱點(diǎn)代碼有兩類:

  • 多次調(diào)用的方法

  • 多次執(zhí)行的循環(huán)體,實(shí)際上也會(huì)以整個(gè)方法作為編譯對(duì)象

判斷熱點(diǎn)的方法主要有兩種:

基于采樣的熱點(diǎn)探測(cè)(Sample Based Hot Spot Detection):周期性檢查各個(gè)線程的棧頂,發(fā)現(xiàn)某個(gè)(某些)方法經(jīng)常出現(xiàn)在棧頂,就是熱點(diǎn)方法 有點(diǎn)簡(jiǎn)單高效,可以獲取方法調(diào)用關(guān)系(將調(diào)用堆棧展開(kāi)即可) 缺點(diǎn)是很難精確確認(rèn)方法熱度,容易受到線程阻塞等外界因素影響 基于計(jì)數(shù)器的熱點(diǎn)探測(cè)(Counter Based Hot Spot Detection):為每個(gè)方法(甚至代碼塊)建立計(jì)數(shù)器,統(tǒng)計(jì)方法調(diào)用次數(shù),如果執(zhí)行超過(guò)閾值就認(rèn)為是熱點(diǎn)方法。缺點(diǎn)是實(shí)現(xiàn)較為困難。優(yōu)點(diǎn)是結(jié)果更精確。

基于計(jì)數(shù)器的探測(cè): Client模式下默認(rèn)1500次,Server下默認(rèn)10000次,根據(jù)參數(shù)-XX:CompileThreshold設(shè)定。 調(diào)用一個(gè)方法,先檢查是否存在JIT編譯版本本地代碼,存在優(yōu)先使用本地代碼,不存在將計(jì)數(shù)器加1。然后判斷調(diào)用計(jì)數(shù)器和回邊計(jì)數(shù)器之和是否大于閾值,如果超過(guò),用JIT編譯器提交編譯請(qǐng)求。JIT編譯完成后方法調(diào)用入口就被系統(tǒng)換成新的。下次調(diào)用已編譯版本。 計(jì)數(shù)器熱度衰減(Counter Decay超過(guò)一定的時(shí)間限度,方法的調(diào)用次數(shù)仍未達(dá)到閾值,方法計(jì)數(shù)器減少一半。在垃圾收集期間執(zhí)行,用-UseCounterDecay來(lái)關(guān)閉,以統(tǒng)計(jì)絕對(duì)次數(shù)。用-XX:CounterHalfLifeTime設(shè)置半半衰周期。 回邊計(jì)數(shù)器:統(tǒng)計(jì)方法中方法體代碼執(zhí)行的次數(shù),在字節(jié)碼中遇到控制流向后跳動(dòng)的指令成為回邊(Back Edge)。 回邊計(jì)數(shù)器閾值可以用-XX:OnStackReplacePercentage來(lái)間接調(diào)整。 回邊計(jì)數(shù)器沒(méi)有熱度衰減過(guò)程。

1.3 編譯過(guò)程

JVM默認(rèn)情況下對(duì)于即時(shí)編譯請(qǐng)求在編譯完成之前,都按照解釋方式執(zhí)行,編譯動(dòng)作在后臺(tái)線程執(zhí)行

參數(shù)-XX:-BackgroundCompilation禁止后臺(tái)編譯,此時(shí)編譯請(qǐng)求會(huì)等待,直到編譯完成后直接執(zhí)行本地代碼

  • Client Compiler:關(guān)注局部?jī)?yōu)化,簡(jiǎn)單快速,放棄耗時(shí)的長(zhǎng)時(shí)優(yōu)化

  • Server Compiler:面向服務(wù)端,高性能,復(fù)雜,較緩慢

“怎么優(yōu)化JIT”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


分享名稱:怎么優(yōu)化JIT
瀏覽路徑:http://weahome.cn/article/gehjop.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部