日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

小师妹学JVM之:JIT中的PrintCompilation

發(fā)布時(shí)間:2024/2/28 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小师妹学JVM之:JIT中的PrintCompilation 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 簡(jiǎn)介
  • PrintCompilation
  • 分析PrintCompilation的結(jié)果
  • 總結(jié)

簡(jiǎn)介

上篇文章我們講到了JIT中的LogCompilation,將編譯的日志都收集起來(lái),存到日志文件里面,并且詳細(xì)的解釋了LogCompilation日志文件中的內(nèi)容定義。今天我們?cè)俸托熋靡黄饘W(xué)習(xí)LogCompilation的姊妹篇PrintCompilation,看看都有什么妙用吧。

PrintCompilation

小師妹:F師兄,上次你給講的LogCompilation實(shí)在是太復(fù)雜了,生成的日志文件又多,完全看不了,我其實(shí)只是想知道有哪些方法被編譯成了機(jī)器碼,有沒(méi)有什么更加簡(jiǎn)單的辦法呢?

真理的大海,讓未發(fā)現(xiàn)的一切事物躺臥在我的眼前,任我去探尋- 牛頓(英國(guó))

當(dāng)然有的,那就給你介紹一下LogCompilation的妹妹PrintCompilation,為什么是妹妹呢?因?yàn)镻rintCompilation輸出的日志要比LogCompilation少太多了。

老規(guī)矩,上上我們的JMH運(yùn)行代碼,文章中使用的代碼鏈接都會(huì)在文末注明,這里使用圖片的原因只是為了方便讀者閱讀代碼:

這里和上次的LogCompilation不同的是,我們使用:-XX:+PrintCompilation參數(shù)。

其實(shí)我們還可以添加更多的參數(shù),例如:

-Xbatch -XX:-TieredCompilation -XX:+PrintCompilation

先講一下-Xbatch。

一般來(lái)說(shuō)JIT編譯器使用的是和主線程完全不同的新的線程。這樣做的好處就是JIT可以和主線程并行執(zhí)行,編譯器的運(yùn)行基本上不會(huì)影響到主線程的的運(yùn)行。

但是有陰就有陽(yáng),有利就有弊。多線程在提高的處理速度的同時(shí),帶給我們的就是輸出日志的混亂。因?yàn)槭遣⑿袌?zhí)行的,我們主線程的日志中,穿插了JIT編譯器的線程日志。

如果使用-Xbatch就可以強(qiáng)迫JIT編譯器使用主線程。這樣我們的輸出日志就是井然有序的。真棒。

再講一下TieredCompilation。

為了更好的提升編譯效率,JVM在JDK7中引入了分層編譯Tiered compilation的概念。

大概來(lái)說(shuō)分層編譯可以分為三層:

第一層就是禁用C1和C2編譯器,這個(gè)時(shí)候沒(méi)有JIT進(jìn)行。
第二層就是只開(kāi)啟C1編譯器,因?yàn)镃1編譯器只會(huì)進(jìn)行一些簡(jiǎn)單的JIT優(yōu)化,所以這個(gè)可以應(yīng)對(duì)常規(guī)情況。
第三層就是同時(shí)開(kāi)啟C1和C2編譯器。

在JDK8中,分層編譯是默認(rèn)開(kāi)啟的。因?yàn)椴煌木幾g級(jí)別處理編譯的時(shí)間是不一樣的,后面層級(jí)的編譯器啟動(dòng)的要比前面層級(jí)的編譯器要慢,但是優(yōu)化的程度更高。

這樣我們其實(shí)會(huì)產(chǎn)生很多中間的優(yōu)化代碼,這里我們只是想分析最終的優(yōu)化代碼,所以我們需要停止分層編譯的功能。

最后是今天的主角:PrintCompilation。

PrintCompilation將會(huì)輸出被編譯方法的統(tǒng)計(jì)信息,因此使用PrintCompilation可以很方便的看出哪些是熱點(diǎn)代碼。熱點(diǎn)代碼也就意味著存在著被優(yōu)化的可能性。

分析PrintCompilation的結(jié)果

小師妹:F師兄,我照著你的例子運(yùn)行了一下,結(jié)果果然清爽了很多。可是我還是看不懂。

沒(méi)有一個(gè)人能全面把握真理。小師妹,我們始終在未知的路上前行。不懂就問(wèn),不會(huì)就學(xué)。

我們?cè)俳貍€(gè)圖看一下生成的日志吧。

因?yàn)槿罩咎L(zhǎng)了,為了節(jié)約大家的流量,我只截取了開(kāi)頭的部分和結(jié)尾的部分。

大家可以看到開(kāi)頭部分基本上都是java自帶的類的優(yōu)化。只有最后才是我們自己寫(xiě)的類。

第一列是方法開(kāi)始編譯的時(shí)間。

第二列是簡(jiǎn)單的index。

第三列是一系列的flag的組合,有下面幾個(gè)flag:

b Blocking compiler (always set for client) * Generating a native wrapper % On stack replacement (where the compiled code is running) ! Method has exception handlers s Method declared as synchronized n Method declared as native made non entrant compilation was wrong/incomplete, no future callers will use this version made zombie code is not in use and ready for GC

如果我們沒(méi)有關(guān)閉分層編譯的話,在方法名前面還會(huì)有數(shù)字,表示是使用的那個(gè)編譯器。

分層編譯詳細(xì)的來(lái)說(shuō)可以分為5個(gè)級(jí)別。

0表示是使用解釋器,不使用JIT編譯。
1,2,3是使用C1編譯器(client)。
4是使用C2編譯器(server)。

現(xiàn)在讓我們來(lái)看一下最后一列。

最后一列包含了方法名和方法的長(zhǎng)度。注意這里的長(zhǎng)度指的是字節(jié)碼的長(zhǎng)度。

如果字節(jié)碼被編譯成為機(jī)器碼,長(zhǎng)度會(huì)增加很多倍。

總結(jié)

本文介紹了JIT中PrintCompilation的使用,并再次復(fù)習(xí)了JIT中的分層編譯架構(gòu)。希望大家能夠喜歡。

本文的例子https://github.com/ddean2009/learn-java-base-9-to-20

本文作者:flydean程序那些事

本文鏈接:http://www.flydean.com/jvm-jit-printcompilation/

本文來(lái)源:flydean的博客

歡迎關(guān)注我的公眾號(hào):程序那些事,更多精彩等著您!

總結(jié)

以上是生活随笔為你收集整理的小师妹学JVM之:JIT中的PrintCompilation的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美在线性爱视频 | 欧美一区免费 | 久久日本视频 | 日韩美女视频网站 | 一区二区三区国产av | 亚洲一在线 | 日韩成人激情视频 | 精品人妻一区二区三区四区在线 | 日本少妇性高潮 | 在线激情小视频 | 女人脱了内裤趴开腿让男躁 | 97视频免费观看 | 成人在线网站 | av青青草 | 美女xx网站| 成人av高清在线观看 | 黑人一区 | 中国美女一级黄色片 | 看全色黄大色黄大片女一次牛 | 国语对白一区二区三区 | 成熟人妻av无码专区 | 91丨九色丨丰满人妖 | 久久久穴 | 97香蕉久久超级碰碰高清版 | 亚洲一区二区高清 | 欧美精品在线看 | 99久久99久久精品免费看蜜桃 | 波多野结衣 久久 | 五月婷婷综 | 免费亚洲网站 | 久久亚洲网站 | 亚洲精品伦理 | 丰满熟女人妻一区二区三区 | 国产区高清 | 欧美日本国产在线 | 97精品视频在线观看 | 国产免费叼嘿网站免费 | 欧洲精品久久久 | 一起操17c| 国产69精品久久久久久 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 欧美日韩一区二区三区国产精品成人 | 久色视频在线 | 中文字幕二 | 欧美8888| 色哟哟一区二区 | 中文字幕不卡av | av夜夜操| 免费黄色在线网站 | 午夜视频在线观看一区二区 | 高清一区在线观看 | 日本中文字幕影院 | 欧美大片xxxx| 一个人看的毛片 | 日产电影一区二区三区 | 亚洲成人高清在线观看 | 中文国产视频 | 亚洲乱色熟女一区二区三区 | 人人玩人人弄 | 亚洲三级在线看 | 秋霞黄色片 | 国产伦精品一区二区三区免.费 | 成人片黄网站久久久免费 | 狠狠操天天干 | 国产精品国产一区二区三区四区 | 欧美日韩在线观看一区二区 | 蜜臀视频一区二区三区 | 男人的天堂国产 | 香蕉网址 | 鲁大师私人影院在线观看 | 亚洲成人网在线播放 | 亚洲激情国产 | 麻豆传媒视频入口 | 中文字幕理论片 | 亚洲欧美一区二区三区孕妇 | 中文欧美日韩 | 亚洲一区二区三区视频在线 | 男人添女人囗交视频 | 久久人体 | 男女做受视频 | 亚洲一区二区三区中文字幕 | 韩国精品视频在线观看 | av网站在线免费播放 | 啪啪一级片 | 夜夜摸夜夜爽 | 国产黄色一级片 | 国产伦理在线观看 | 久久艹精品 | 污污网站免费在线观看 | 免费看三级黄色片 | 成人免费无码大片a毛片 | 成人爽爽视频 | 超碰在线97国产 | 久久综合九色综合欧美狠狠 | 亚洲视频在线播放免费 | 96在线观看| 日本久久中文字幕 | 亚洲精品乱码久久久久久蜜桃91 | 狠狠干天天 |