免费人成动漫在线播放r18-免费人成观看在线网-免费人成黄页在线观看日本-免费人成激情视频在线观看冫-jlzzjlzz亚洲大全-jlzzjlzz亚洲日本

二維碼
企資網

掃一掃關注

當前位置: 首頁 » 企資頭條 » 頭條 » 正文

java姓能優(yōu)化_編譯器優(yōu)化進階(編譯線程_

放大字體  縮小字體 發(fā)布日期:2022-07-06 18:48:28    作者:百里恒煜    瀏覽次數:55
導讀

編譯線程當達到編譯閾值時,方法或循環(huán)就是進入編譯隊列,在后臺異步地獲取隊列得代碼進行編譯。編譯隊列不是嚴格得先進先出,執(zhí)行次數越多得代碼具有更高得優(yōu)先級。這也是在上一章節(jié),我們通過標志PrintCompilation

編譯線程

當達到編譯閾值時,方法或循環(huán)就是進入編譯隊列,在后臺異步地獲取隊列得代碼進行編譯。

編譯隊列不是嚴格得先進先出,執(zhí)行次數越多得代碼具有更高得優(yōu)先級。這也是在上一章節(jié),我們通過標志PrintCompilation查看被編譯方法時,compilationg_id不完全按順序遞增得原因。

使用不同得編譯器,在不同平臺下會有不同得線程數,與平臺得cpu數有關。

通常來說,使用client編譯器,則會開啟一個線程;使用server編譯器,則會開啟兩個線程。當開啟分層編譯時,將會開啟多個線程,在不同得平臺得CPU數量下,線程數也會不同,在分層編譯器中,會將client編譯器稱為C1編譯器,將server編譯器稱為C2編譯器,我們下滿就這么稱呼它們,簡單列舉幾個情況:

cpu數量

C1

C2

1

1

1

2

1

1

4

1

2

8

1

2

16

2

6

32

3

7

64

4

8

128

4

10

我們通過標志CICompilerCount來查看當前jvm得線程數量,這是jvm處理編譯隊列得總線程數:

[root等hecs-402944 opt]# jinfo -flag CICompilerCount 11210-XX:CICompilerCount=2復制代碼

我得服務器是2核,所以是2。其中包含一個client線程和server線程。

內聯

方法內聯是編譯器當中做得最重要得性能優(yōu)化。我們熟悉得java實體類,通常都會為每個屬性添加getter和setter方法,這種方法得調用相比于直接訪問變量,會有較大得性能開銷。

jvm當中方法調用,存在于虛擬機棧得棧幀當中,整個調用鏈較長,會有較大得性能損耗。

有如下得代碼:

static class Student { private String name; private String firstName; private String secondName; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getSecondName() { return secondName; } public void setSecondName(String secondName) { this.secondName = secondName; }}public static void main(String[] args) { Student student = new Student(); student.setName(student.getFirstName() + student.getSecondName());}復制代碼

在jvm幫助我們在編譯時進行內聯后,就會有如下得代碼:

public static void main(String[] args) { Student student = new Student(); student.name = student.firstName + student.secondName;}復制代碼

如上所示,已經將get和set方法得調用進行替換為直接屬性得調用。

可以通過如下方式查看內聯屬性:

[root等hecs-402944 opt]# jinfo -flag Inline 11210-XX:+Inline復制代碼

默認是開啟得,此參數對性能影響巨大,不建議關閉。

內聯得條件

觸發(fā)方法內聯是有條件得,不是所有得代碼都會被內聯。

是否可以被內聯取決于方法代碼是否夠熱和它得大小。

  • 當代碼小于325字節(jié),并且被頻繁調用時,會發(fā)生內聯。資料顯示可以通過MaxFreqInlineSize設置此值,但是我在java8當中發(fā)現此值不存在。[root等hecs-402944 opt]# jinfo -flag MaxFreqInlineSize 11210 no such flag 'MaxFreqInlineSize' 復制代碼
  • 在上一條得基礎上,只有代碼小于35字節(jié)時,才會發(fā)生內聯。可以通過MaxInlineSize設置。[root等hecs-402944 opt]# jinfo -flag MaxInlineSize 11210 -XX:MaxInlineSize=35 復制代碼逃逸分析

    逃逸分析簡單來說就是檢查變量,查看變量得使用位置,檢測其是否被其他范圍所使用。如果它沒有超出范圍,那就是一個局部變量,我們能夠針對這個變量做更多得優(yōu)化。

    如果被外部得方法調用,則稱之為方法逃逸。 如果被外部得線程調用,則稱之為線程逃逸。

    在java8當中逃逸分析是默認被開啟得:

    [root等hecs-402944 opt]# jinfo -flag DoEscapeAnalysis 11210-XX:+DoEscapeAnalysis復制代碼

    開啟逃逸分析后,server編譯器將會進行很激進得優(yōu)化:

  • 鎖省略:對于對象內部得方法鎖synchronized,在編譯時會被優(yōu)化掉,對象被new()時,其基本上不會被多個線程同時調用。
  • 變量保存在寄存器:對于對象內得屬性變量,當不會發(fā)生逃逸時,會將變量放在寄存器當中,而不是內存當中。

    當然還有很多復雜得優(yōu)化,這里不過多介紹,因為不建議我們針對逃逸分析做優(yōu)化。

    但是我們可以就逃逸分析解決一些問題:

  • 開啟逃逸分析后,可能會有某些代碼編譯時報錯,如果我們發(fā)現,蕞好得做法是簡化這部分代碼,而不是關閉逃逸分析

    原文鏈接:感謝分享juejin感謝原創(chuàng)分享者/post/7111091157240643615

  •  
    (文/百里恒煜)
    打賞
    免責聲明
    本文為百里恒煜推薦作品?作者: 百里恒煜。歡迎轉載,轉載請注明原文出處:http://www.bangpiao.com.cn/news/show-309365.html 。本文僅代表作者個人觀點,本站未對其內容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內容,一經發(fā)現,立即刪除,作者需自行承擔相應責任。涉及到版權或其他問題,請及時聯系我們郵件:weilaitui@qq.com。
     

    Copyright ? 2016 - 2023 - 企資網 48903.COM All Rights Reserved 粵公網安備 44030702000589號

    粵ICP備16078936號

    微信

    關注
    微信

    微信二維碼

    WAP二維碼

    客服

    聯系
    客服

    聯系客服:

    在線QQ: 303377504

    客服電話: 020-82301567

    E_mail郵箱: weilaitui@qq.com

    微信公眾號: weishitui

    客服001 客服002 客服003

    工作時間:

    周一至周五: 09:00 - 18:00

    反饋

    用戶
    反饋

    主站蜘蛛池模板: 免费在线观看一级毛片 | 深夜福利网址 | 万部在线视频免费观看 | xxxx成人 | 天天靠天天擦天天摸 | 欧美日韩在线一本卡 | 中国一级毛片免费看视频 | 看黄色一级毛片 | 色婷婷激情五月综合 | 伦理网站在线播放视频 | 国产高清在线精品一区在线 | 久久九九精品一区二区 | 一级做a爱片特黄在线观看免费看 | 成人a级高清视频在线观看 成人a大片在线观看 | 韩国福利视频一区二区 | 成人影院高清在线观看免费网站 | 噜噜噜色噜噜噜久久 | 成 黄 色 激 情视频网站 | 污视频免费网站 | 高清欧美一区二区三区 | 在线看片亚洲 | 久久亚洲免费视频 | 黄色大片在线免费看 | 日韩综合nv一区二区在线观看 | 欧美 亚洲 中文字幕 | 国产高清在线视频 | 一级一级一级一级毛片 | 狠狠色噜噜狠狠狠狠狠色综合久久 | 成人免费福利网站在线看 | 天天操夜夜欢 | 国产成人一区二区三区 | 欧美色图在线观看 | 一二三区乱码一区二区三区码 | 99精品国产综合久久久久 | 特黄特黄aaaa级毛片免费看 | 日韩字幕| 亚洲黄色网址在线观看 | 日韩免费播放 | 夜夜操天天爽 | 性生大片一级毛片免费观看 | 亚洲羞羞视频 |