記一次JVM調(diào)優(yōu)

調(diào)優(yōu)參考:https://developer.aliyun.com/article/690392

高級(jí)程序員必不可少的技能,這個(gè)也是高薪必問的問題

能夠有效通過 JVM 調(diào)優(yōu)提升系統(tǒng)性能的人往往被人們冠以”大藕鹨埃”、”大師”之類的稱呼晤愧。

過程

  1. 在項(xiàng)目啟動(dòng)時(shí)加上必要的參數(shù)
-XX:+PrintGC -XX:+PrintGCCause -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/Users/aihe/idea/idea_gc.txt -XX:+DisableExplicitGC  -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/issue_error

這一步gceasy.io網(wǎng)站上兆览,直接就給了提示,增加metaspace的大小琴许,在參數(shù)設(shè)置中聋涨,我們沒有看到設(shè)置metaspace晾浴,那么下面一步做調(diào)整。

image
  1. 新生代牍白,MetaSpace不夠用脊凰,增加如下參數(shù)
    初始堆內(nèi)存與最大堆內(nèi)存大小設(shè)為一致,這樣虛擬機(jī)一次性的分配內(nèi)存茂腥,而不至于在初始堆大小不夠用又向系統(tǒng)分配內(nèi)存
-Xmx2048m -Xms2048m -Xmn1024m -XX:MetaspaceSize=512m

這次參數(shù)變更為如下:

-Dfile.encoding=UTF-8
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:-OmitStackTraceInFastThrow
-Xverify:none
-XX:+PrintGC
-XX:+PrintGCCause
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:/Users/aihe/idea/idea_gc.txt
-XX:+DisableExplicitGC
-Xmx2048m
-Xms2048m
-Xmn1024m
-XX:MetaspaceSize=521m

想查看每個(gè)具體的屬性含義可以用:
java -XX:+PrintFlagsFinal或者去Oracle文檔查看詳細(xì)介紹

  1. 啟動(dòng)idea狸涌,打開項(xiàng)目,在gceasy.io網(wǎng)站上分析垃圾收集日志, 可以看到幾個(gè)常用的指標(biāo):

新生代最岗,老年代分配的空間帕胆,以及使用的內(nèi)存峰值


image

吞吐量及暫停時(shí)間:

  • 吞吐量:吞吐量是指應(yīng)用程序線程用時(shí)占程序總用時(shí)的比例
  • 暫停時(shí)間:指一個(gè)時(shí)間段內(nèi)應(yīng)用程序線程讓與 GC 線程執(zhí)行而完全暫停。
image
  1. 換一下垃圾收集器試試
-XX:+UseG1GC

看起來吞吐量也降低了般渡,暫停時(shí)間也增加了懒豹。


image
image
  1. 新增一個(gè)GC參數(shù)芙盘,最大的停頓時(shí)間為50ms,這個(gè)參數(shù)

這個(gè)參數(shù)不是硬性要求脸秽,JVM只是會(huì)盡最大的努力來達(dá)到這個(gè)要求儒老,但是還是可能超過這個(gè)值

-XX:MaxGCPauseMillis=50

貌似沒啥變化,就不貼圖了
新增參數(shù)记餐,初始堆占用百分比:

-XX:InitiatingHeapOccupancyPercent=50

看起來效果也不是特別好


image

增加垃圾收集器的并發(fā)線程數(shù):驮樊,效果反而更差了。

-XX:ParallelGCThreads=20 //設(shè)置并行回收時(shí)GC的線程數(shù)
-XX:ConcGCThreads=5

G1的垃圾收集器階段:

  • 初始標(biāo)記
  • 并發(fā)標(biāo)記
  • 最終標(biāo)記
  • 篩選回收
  1. 用一下CMS垃圾收集器看看
-XX:+UseConcMarkSweepGC

效果好些還是不如最初的狀態(tài)

image
  1. 我們還是用最開始的垃圾收集器組合吧片酝。
image
-XX:+UseParallelGC

最后

對(duì)JVM這塊不夠大的指標(biāo)就看吞吐量和暫停時(shí)間囚衔,更細(xì)的指標(biāo)需要大家一起探索

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雕沿,隨后出現(xiàn)的幾起案子练湿,更是在濱河造成了極大的恐慌,老刑警劉巖晦炊,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鞠鲜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門煎源,熙熙樓的掌柜王于貴愁眉苦臉地迎上來羹铅,“玉大人,你說我怎么就攤上這事坐漏”【危” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵赊琳,是天一觀的道長(zhǎng)街夭。 經(jīng)常有香客問我,道長(zhǎng)躏筏,這世上最難降的妖魔是什么板丽? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮趁尼,結(jié)果婚禮上埃碱,老公的妹妹穿的比我還像新娘。我一直安慰自己酥泞,他們只是感情好砚殿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著芝囤,像睡著了一般似炎。 火紅的嫁衣襯著肌膚如雪辛萍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天羡藐,我揣著相機(jī)與錄音贩毕,去河邊找鬼。 笑死传睹,一個(gè)胖子當(dāng)著我的面吹牛耳幢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播欧啤,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼睛藻,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了邢隧?” 一聲冷哼從身側(cè)響起店印,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎倒慧,沒想到半個(gè)月后按摘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纫谅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年炫贤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片付秕。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兰珍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出询吴,到底是詐尸還是另有隱情掠河,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布猛计,位于F島的核電站唠摹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏奉瘤。R本人自食惡果不足惜勾拉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毛好。 院中可真熱鬧望艺,春花似錦、人聲如沸肌访。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吼驶。三九已至惩激,卻和暖如春店煞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背风钻。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工顷蟀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骡技。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓鸣个,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親布朦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子囤萤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Java 虛擬機(jī)有自己完善的硬件架構(gòu), 如處理器、堆棧是趴、寄存器等涛舍,還具有相應(yīng)的指令系統(tǒng)。JVM 屏蔽了與具體操作系...
    尹小凱閱讀 1,691評(píng)論 0 10
  • 這篇文章是我之前翻閱了不少的書籍以及從網(wǎng)絡(luò)上收集的一些資料的整理唆途,因此不免有一些不準(zhǔn)確的地方富雅,同時(shí)不同JDK版本的...
    高廣超閱讀 15,603評(píng)論 3 83
  • 工作之余,想總結(jié)一下JVM相關(guān)知識(shí)肛搬。 Java運(yùn)行時(shí)數(shù)據(jù)區(qū): Java虛擬機(jī)在執(zhí)行Java程序的過程中會(huì)將其管理的...
    Huang遠(yuǎn)閱讀 635評(píng)論 0 2
  • 1.什么是垃圾回收没佑? 垃圾回收(Garbage Collection)是Java虛擬機(jī)(JVM)垃圾回收器提供...
    簡(jiǎn)欲明心閱讀 89,493評(píng)論 17 311
  • 原文閱讀 前言 這段時(shí)間懈怠了,罪過温赔! 最近看到有同事也開始用上了微信公眾號(hào)寫博客了图筹,挺好的~給他們點(diǎn)贊,這博客我...
    碼農(nóng)戲碼閱讀 5,968評(píng)論 2 31