調優(yōu)IntelliJ IDEA的JVM參數

古人說得好,工欲善其事,必先利其器,這篇小隨筆其實很久之前就該寫了(因為是很久之前做的事情了)?,F在為了寫它,還得手動復現當時的場景,真麻煩吶。

筆者的機器配置和環(huán)境如下:

  • Intel Core i7-4870HQ, 4C/8T @ 2.5~3.7GHz
  • 16GB DDR3L 1600MHz RAM
  • 512GB PCIe SSD
  • macOS Mojave 10.14.4
  • IntelliJ IDEA 2018.2.7

調整IDEA的JVM參數還是很有必要的,下面是我從打開IDEA到一頓操作使之內存吃緊之后的內存占用及GC情況:

當開的項目過多,或Build/Import超大項目時,就會出現這種提示(在1080p外接顯示器上截的,糊了),并且會越發(fā)卡頓:

點擊Configure,就會彈出修改最大堆大小的對話框:

當然,我們并不滿足于只修改堆大小。點擊IDEA Help菜單中的Edit Custom VM Options項,打開IDEA的JVM參數列表,就可以進行優(yōu)化了。

請注意,以下是根據我的環(huán)境調整的參數,雖然大體通用,但仍然要具體情況具體分析。另外為了表述清晰,寫了一些注釋,有一些默認開啟的項也加了進來,就當是復習+拓展一下常用的JVM參數吧。

# 堆大小,按常規(guī)操作,設成相同的,避免自動擴容
-Xms1536m
-Xmx1536m
# 年輕代大小,Sun推薦設置為堆大小的3/8
-Xmn576m
# 在JVM啟動時即預初始化堆中的所有頁,能夠快速利用
-XX:+AlwaysPreTouch

# 設置一個較大的元空間初始值,避免頻繁GC擴容
-XX:MetaspaceSize=256m 
# 元空間最大默認不限制,設一個值保護一下
-XX:MaxMetaspaceSize=768m

# 啟用CMS GC
-XX:+UseConcMarkSweepGC
# 啟用年輕代并行GC,與CMS是好搭檔,其實也不用另寫
-XX:+UseParNewGC
# CMS并行標記,降低標記階段停頓時間
-XX:+CMSParallelRemarkEnabled
# 觸發(fā)CMS GC的堆內存占用比例,調大點以降低GC頻率
-XX:CMSInitiatingOccupencyFraction=85
# GC線程數(ParallelGCThreads、ConcGCThreads)用默認值,不再寫

# 對象晉升到老年代的年齡,默認15。根據觀察,對IDEA來說設成10就足夠了
-XX:MaxTenuringThreshold=10

# 壓縮普通對象指針
-XX:+UseCompressedOops

# 指定服務器版JIT編譯器,其實不用寫,默認已經是了
-server
# JIT代碼緩存的大小,默認是240M
-XX:ReservedCodeCacheSize=360M
# 打開JIT分層編譯,默認是開啟的了
-XX:+TieredCompilation
# 每MB堆空間中的軟引用能夠存活的近似毫秒數
-XX:SoftRefLRUPolicyMSPerMB=50

# OOM時輸出堆dump轉儲文件
-XX:+HeapDumpOnOutOfMemoryError
# 禁止把某些異常的stack trace優(yōu)化掉,防止信息被吃了找不到問題
-XX:-OmitStackTraceInFastThrow
# 禁用字節(jié)碼驗證。IDEA的代碼足夠可靠,不用驗證
-Xverify:none
# 啟用斷言機制(enable assertion)
-ea

-Dfile.encoding=UTF-8
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djdk.http.auth.tunneling.disabledSchemes=""

-XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log
-XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof

可見,雖然我們平時提起調優(yōu),指的都是那些相對大型的服務端應用,但是Java離我們如此之近,身邊的很多東西都是可以拿來實踐的。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容