日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JVM性能調優實戰:讓你的IntelliJ Idea縱享絲滑

瀏覽:45日期:2024-07-31 14:39:25

本文已被Github倉庫收錄 https://github.com/silently9527/JavaCore

前言

在前面整理了一篇關于JVM故障診斷和處理工具,考慮到大部分的Java程序員都使用的是IntelliJ Idea,本篇就使用工具來實戰演練對IntelliJ Idea運行速度調優

調優前的運行狀態

原始配置內容

要查詢idea原始配置文件的路徑可以在VisualVM中的概述中查看

JVM性能調優實戰:讓你的IntelliJ Idea縱享絲滑

原始配置內容:

-XX:ReservedCodeCacheSize=240m-XX:+UseCompressedOops-Dfile.encoding=UTF-8-XX:SoftRefLRUPolicyMSPerMB=50-ea-Dsun.io.useCanonCaches=false-Djava.net.preferIPv4Stack=true-Djdk.http.auth.tunneling.disabledSchemes=''-XX:+HeapDumpOnOutOfMemoryError-XX:-OmitStackTraceInFastThrow-XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log-XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof-Xmx512m打印啟動時間插件開發

需要直觀的看到優化前和優化后啟動時間的變化,所以需要簡單做一個Idea的插件開發,關于Idea插件開發的流程建議參考我以前的文章《IDEA插件:多線程文件下載插件開發》

JVM的啟動時間到所有組件初始化完成后的時間就看做是IDEA的啟動時間,代碼如下

public class MyApplicationInitializedListener implements ApplicationInitializedListener { @Override public void componentsInitialized() { RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean(); long startTime = bean.getStartTime(); long costTime = System.currentTimeMillis() - startTime; Messages.showMessageDialog('毫秒:' + costTime, '啟動耗時', Messages.getInformationIcon()); }}

plugin.xml中添加如下代碼:

<extensions defaultExtensionNs='com.intellij'> <applicationInitializedListener implementation='cn.silently9527.MyApplicationInitializedListener'/></extensions>

優化前的啟動信息與時間消耗

JVM性能調優實戰:讓你的IntelliJ Idea縱享絲滑 JVM性能調優實戰:讓你的IntelliJ Idea縱享絲滑

根據VisualGC和IDEA啟動插件收集到的信息:

IDEA啟動耗時 15s 總共垃圾收集22次,耗時1.2s,其中新生代GC 17次,耗時324ms; 老年代GC 5次,耗時953ms 加載類27526個,耗時 21s

按照這個數據來看也算是正常,15s 其實也在接受范圍內,由于本文主要演示性能調優,所以需要測試能否在快一些

開始嘗試優化

調整內存來控制垃圾回收頻率

圖上我們可以看出,啟動參數指定的512m的內存被分配到新生代的只有169m,由于IDEA是我們開發常用的工具,平時的編譯過程也需要足夠的內存,所以我們需要先把總的內存擴大,這里我設置最大的內存 -Xmx1024m ,為了讓JVM在GC期間不需要再浪費時間再動態計算擴容大小,同時也設置了 -Xms1024m ;

在啟動的過程中Eden共發生了17次GC,為了減少新生代gc次數,我把新生代的內存大小設置成 -Xmn256m ;

重新啟動之后查看VisualGC,新生代gc次數從 17次 降低到了 7次,耗時從 324ms 降低到了 152ms。

JVM性能調優實戰:讓你的IntelliJ Idea縱享絲滑

在調整內存前發生了5次Full GC,調整內存后的依然還是有4次Full GC,但是從兩張圖我們可以看出,老年代的空間還有很多剩余,是不應該發生Full GC的;考慮是否是代碼中有地方手動調用 System.gc() 出發了Full GC,所以添加了參數 -XX:+DisableExplicitGC ,再次重新啟動IDEA,結果很失望,依然還有4次Full GC;

再次仔細觀察優化前的圖,注意看 Last Cause: Metadata GC Threshold , 最后一次gc是應該Metaspace區域內存不夠發生的GC,為了驗證我們的猜想,打印出GC日志來看看。在 idea.vmoptions 中添加打印日志相關的參數:

-XX:+PrintGCDetails-XX:+PrintGCDateStamps-Xloggc:../gc.log

JVM的GC日志的主要參數包括如下幾個:

-XX:+PrintGC 輸出GC日志 -XX:+PrintGCDetails 輸出GC的詳細日志 -XX:+PrintGCTimeStamps 輸出GC的時間戳(以基準時間的形式) -XX:+PrintGCDateStamps 輸出GC的時間戳(以日期的形式,如 2013-05-04T21:53:59.234+0800) -XX:+PrintHeapAtGC 在進行GC的前后打印出堆的信息 -Xloggc:../logs/gc.log 日志文件的輸出路徑

重新啟動idea,查看gc.log

JVM性能調優實戰:讓你的IntelliJ Idea縱享絲滑

其中 PSYoungGen: 表示新生代使用的ParallelScavenge垃圾收集器, 31416K->0K(181248K) 表示 gc前已使用的內存大小 -> gc后已使用內存大小(該區域的總內存大小)

從日志中我們看出每次Full GC都是因為 Metadata GC Threshold ,而Metaspace每次gc回收的內存幾乎沒有,僅僅是擴大了該區域的容量;找到了原因那就好辦了,添加如下的參數調整Metaspace的大小:

-XX:MetaspaceSize=256m

再次重啟Idea之后,發現Full GC沒有了,心情很爽

JVM性能調優實戰:讓你的IntelliJ Idea縱享絲滑

測試打開大項目點擊編譯代碼,發現自己的idea卡死了,查看VisualGC之后發現堆內存都還有空閑,只有Metaspace被全部占滿了,所以是自己給的最大空間設置太小,所以直接去掉了 -XX:MaxMetaspaceSize=256m

選擇垃圾收集器

從剛才的gc日志中,我們可以發現默認使用的是ParallelScavenge + Parallel Old垃圾收集器,這個組合注重的是吞吐量,這里我們嘗試換一個注重低延時的垃圾收集器試一試

ParNew + CMS

在 idea.vmoptions 中添加如下配置:

-XX:+UseConcMarkSweepGC-XX:+UseParNewGC

重啟IDEA之后查看VisualGC

JVM性能調優實戰:讓你的IntelliJ Idea縱享絲滑

很尷尬,同樣發生了6次gc, ParallelScavenge + Parallel Old 的組合耗時197ms,而 ParNew + CMS 的組合耗時379ms;雖然是這個結果,但是我們需要考慮當前只發生了MinorGC,如果發生FullGC了結果又會如何了,大家可以自己測試一下

G1

我們在換一個最新的G1垃圾回收器試試,在 idea.vmoptions 中添加如下配置:

-XX:+UseG1GC

JVM性能調優實戰:讓你的IntelliJ Idea縱享絲滑

這個結果好像也還是要慢一點點,自己多次測試過這兩個垃圾回收器,雖然每次結果都不一樣,相差不遠,所以垃圾回收器可以自己選擇,這里我們選擇的是G1

類加載時間優化

根據之前的分析,idea啟動加載類27526個,耗時 21s,這個我們有辦法能優化一下嗎?因為idea是常用的開發工具,經常很多人的使用,我們可以認為它的代碼是安全的,是否符合當前虛擬機的要求,不會危害虛擬機的安全,所以我們使用參數 -Xverify:none 來禁用字節碼的驗證過程

重啟IDEA

JVM性能調優實戰:讓你的IntelliJ Idea縱享絲滑

耗時下降到了11s,效果還是比較明顯的

總結

做完了所有優化之后,經過多次重啟測試,平均的啟動時間下降到了11s,為了安慰我本次操作沒有白辛苦,搞一張11s以下的圖

JVM性能調優實戰:讓你的IntelliJ Idea縱享絲滑

我已經從零開始手寫了簡易版springmvc,以及編寫了詳細的說明文檔,希望能夠幫助伙伴們深入理解springmvc核心原理.

JVM性能調優實戰:讓你的IntelliJ Idea縱享絲滑 JVM性能調優實戰:讓你的IntelliJ Idea縱享絲滑

源碼獲取地址:我把開源的項目代碼都已經放到了Git倉庫,Github倉庫地址:https://github.com/silently9527 ,碼云倉庫地址:https://gitee.com/silently9527 ,

到此這篇關于JVM性能調優實戰:讓你的IntelliJ Idea縱享絲滑的文章就介紹到這了,更多相關JVM性能調優內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: IDEA
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品玖玖玖在线资源| 蘑菇福利视频一区播放| 激情婷婷欧美| 欧美激情一区| 久久av资源| 免费在线观看视频一区| 91精品一区二区三区综合| 老司机精品视频网| 国产精品久一| 日韩高清三区| 亚洲视频国产精品| 国产精品88久久久久久| 日韩高清欧美激情| 国产精品一站二站| 奇米亚洲欧美| 日本a级不卡| 午夜天堂精品久久久久| 婷婷成人av| 免费人成精品欧美精品| 欧美午夜不卡| 久久国产日韩| 亚洲午夜电影| 亚洲特级毛片| 欧美日韩四区| 国产亚洲在线| 国产精品美女午夜爽爽| 国产精品激情电影| 久久黄色影视| 国产精品玖玖玖在线资源| 国产探花一区二区| 91一区二区三区四区| 日本不卡免费高清视频在线| 日本久久黄色| 人在线成免费视频| 一本一道久久a久久精品蜜桃| 九色精品91| 国内精品福利| 最新亚洲一区| 亚洲日产国产精品| 国产精品久久久久9999高清| 国产精品男女| 你懂的国产精品永久在线| 国产精品久久久久毛片大屁完整版| 国产三级一区| 久久香蕉精品香蕉| 欧美少妇精品| 久久五月天小说| 国产亚洲激情| 日韩专区视频网站| 国产激情综合| 久久精品一本| 精品国产午夜肉伦伦影院 | 精品久久久久中文字幕小说| 狂野欧美性猛交xxxx| 性欧美xxxx免费岛国不卡电影| 免费国产自久久久久三四区久久| 久久高清一区| 国产亚洲一卡2卡3卡4卡新区| 欧美久久香蕉| 欧美片第1页| 国产精品毛片| 国产欧美日韩一区二区三区四区 | 亚洲一二av| 亚洲午夜免费| 免费在线成人| 欧美肉体xxxx裸体137大胆| 国产视频一区三区| 老司机精品在线| 国内精品福利| 日韩精品一区二区三区中文在线| 国产福利一区二区三区在线播放| 国产精品地址| 伊人久久亚洲美女图片| 热久久久久久久| 美女性感视频久久| 99精品电影| 国产精品地址| 欧美不卡在线| 国产精品亚洲欧美| 久久精品1区| 国产精品视频首页| 99久久www免费| 日韩高清三区| 电影亚洲精品噜噜在线观看| 久久婷婷丁香| 久久99久久久精品欧美| 欧美日韩中文一区二区| 69堂精品视频在线播放| 精品国产午夜肉伦伦影院| 在线一区免费观看| 精品一区二区三区的国产在线观看 | 国产精品久久久久久久久免费高清| 日韩中文在线电影| 日韩中文av| 日韩影院二区| 国产精品一区2区3区| 午夜久久影院| 中文字幕一区久| 丁香婷婷久久| 国产激情综合| 国产精品一二| 日本不卡视频在线| 一区二区三区国产在线| 99国产精品久久久久久久| 91精品一区二区三区综合在线爱| 国产999精品在线观看| 国产精品久久久久久久久久妞妞 | 日韩亚洲一区在线| 精品久久在线| 日韩国产在线一| 蜜桃视频在线观看一区| 亚洲精品一区二区妖精| 国产成人精品亚洲日本在线观看| 国产精品久久免费视频| 日本va欧美va欧美va精品| 亚洲资源网站| 亚洲一区av| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲午夜国产成人| 99成人在线| 91成人超碰| 国产精品91一区二区三区| 图片区亚洲欧美小说区| 99久久精品国产亚洲精品| 日韩精品2区| 午夜欧美巨大性欧美巨大| 日韩欧美午夜| 天堂资源在线亚洲| 免费av一区| 国产免费成人| 热久久免费视频| 亚洲精品影视| 69堂精品视频在线播放| 欧美综合精品| 久久gogo国模啪啪裸体| 老司机免费视频一区二区三区| 国产精品99久久免费观看| 国产精品红桃| 日韩av在线中文字幕| 五月激情久久| 国产在线不卡| 久久电影一区| 日韩一二三区在线观看| 亚洲精品中文字幕99999| 日本成人中文字幕| 国产精品对白| 欧美日韩国产观看视频| 国产一区二区中文| 在线免费观看亚洲| 91午夜精品| 麻豆精品在线视频| 久久精品午夜| 激情综合在线| 日韩中文一区二区| 麻豆91精品91久久久的内涵| 欧美日韩国产观看视频| 免费成人网www| 亚洲精品美女91| 久久不见久久见国语| 日韩综合精品| 午夜亚洲福利在线老司机| 91成人福利| 日韩深夜视频| 久久国产99| 国产黄色精品| 久久天堂精品| 亚洲精品系列| 高清一区二区| 香蕉视频成人在线观看| 国产精品对白久久久久粗| 日韩在线综合| 中文字幕av亚洲精品一部二部 | 欧美日韩一区二区综合| 午夜亚洲福利| 黄色在线网站噜噜噜| 亚洲精品1区| 国产精品毛片视频| 日韩影院二区| 亚洲精品中文字幕99999| 久久免费视频66| 黄色欧美日韩| 国产劲爆久久| 一区二区自拍| 久久99久久久精品欧美| 婷婷六月综合| 国产精品欧美在线观看| 99久久精品网站| 欧美日韩一区二区三区不卡视频| 天堂av在线| 视频一区日韩精品| 最近高清中文在线字幕在线观看1| 天堂成人国产精品一区| 免费看一区二区三区| 2023国产精品久久久精品双| 国产精品一线天粉嫩av| 欧美91精品| 精品入口麻豆88视频| 日韩精品一二三四| 天堂8中文在线最新版在线| 日韩精品亚洲一区二区三区免费|