idea中的jvm調(diào)優(yōu)方式
1、背景
idea作為一個高頻使用的java IDE。
性能的好壞,影響著開發(fā)的心情。
工欲善其事必先利其器。
2、優(yōu)化后的參數(shù)
優(yōu)化后的感覺是拙匠常怪工具差。
明明可以流暢的編碼,為啥之前選擇的是默默忍受,不去改變。
真的是流暢了很多。
當前電腦的配置是 windows i5 8核16G
# custom IntelliJ IDEA VM options # 堆大小,按常規(guī)操作,設(shè)成相同的,避免自動擴容 -Xms1536m -Xmx1536m # 年輕代大小,Sun推薦設(shè)置為堆大小的3/8 -Xmn576m # 在JVM啟動時即預(yù)初始化堆中的所有頁,能夠快速利用 -XX:+AlwaysPreTouch # 設(shè)置一個較大的元空間初始值,避免頻繁GC擴容 -XX:MetaspaceSize=256m # 元空間最大默認不限制,設(shè)一個值保護一下 -XX:MaxMetaspaceSize=768m # 啟用G1 GC # -XX:+UseG1GC # 啟用CMS GC -XX:+UseConcMarkSweepGC # CMS并行標記,降低標記階段停頓時間 -XX:+CMSParallelRemarkEnabled # 重新標記前先執(zhí)行一次新生代GC -XX:+CMSScavengeBeforeRemark # 觸發(fā)CMS GC的堆內(nèi)存占用比例,調(diào)大點以降低GC頻率 -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly # 對象晉升到老年代的年齡,默認15。根據(jù)觀察,對IDEA來說設(shè)成10就足夠了 -XX:MaxTenuringThreshold=10 # 壓縮普通對象指針 -XX:+UseCompressedOops # 指定服務(wù)器版JIT編譯器,其實不用寫,默認已經(jīng)是了 -server # JIT代碼緩存的大小,默認是240M -XX:ReservedCodeCacheSize=360M # 打開JIT分層編譯,默認是開啟的了 -XX:+TieredCompilation # 每MB堆空間中的軟引用能夠存活的近似毫秒數(shù) -XX:SoftRefLRUPolicyMSPerMB=50 # OOM時輸出堆dump轉(zhuǎn)儲文件 -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 -javaagent:D:\software\JetBrains\IntelliJ IDEA 2019.2\bin\jetbrains-agent.jar
3、cutom vm options和idea.exe.vmoptions的區(qū)別
- idea.exe.vmoptions是開發(fā)工具自帶的,不建議修改,因為升級的時候會進行覆蓋
- cutom vm options是用戶自定義的,是留給使用者個性化配置的。默認保存在用戶目錄下的 .IntelliJIdea2019.2/config
- 實際操作是idea.exe.vmoptions是全局的配置,cutom vm options會對定義的配置進行覆蓋
4、修改配置后無法啟動
報錯的信息如下:
MaxJavaStackTraceDepth=-1 is outside the allowed range,本質(zhì)是配置文件的格式不正確或包含了不能被識別的屬性。
實際上的 -XX:+UseParNewGC:設(shè)置年輕代為多線程收集 這個屬性被廢棄了。

idea自帶的jdk是jdk11,所以是不包含這個屬性的。
與表象是一致的。

idea jvm調(diào)優(yōu),MaxJavaStackTraceDepth=-1 is outside the allowed range
還在使用idea的默認jvm參數(shù)嗎?那么是時候動手優(yōu)化一下你的idea了,體驗一下飛一般的感覺。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot項目啟動自動跳轉(zhuǎn)到瀏覽器的操作代碼
這篇文章主要介紹了springboot項目啟動自動跳轉(zhuǎn)到瀏覽器的操作代碼,本文圖文實例代碼相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下2024-03-03
Java數(shù)據(jù)結(jié)構(gòu)之集合框架與常用算法詳解
Java集合框架是Java中常用的數(shù)據(jù)結(jié)構(gòu)庫,包括List、Set、Map等多種數(shù)據(jù)結(jié)構(gòu),支持快速的元素添加、刪除、查找等操作,可以用于解決各種實際問題。Java中也有多種常用算法,如排序、查找、遞歸等,在數(shù)據(jù)處理和分析中有廣泛應(yīng)用2023-04-04
SpringBoot整合canal實現(xiàn)數(shù)據(jù)緩存一致性解決方案
canal主要用途是基于?MySQL?數(shù)據(jù)庫增量日志解析,提供增量數(shù)據(jù)訂閱和消費,canal是借助于MySQL主從復(fù)制原理實現(xiàn),本文將給大家介紹SpringBoot整合canal實現(xiàn)數(shù)據(jù)緩存一致性解決方案,需要的朋友可以參考下2024-03-03
springboot 使用Spring Boot Actuator監(jiān)控應(yīng)用小結(jié)
本篇文章主要介紹了springboot 使用Spring Boot Actuator監(jiān)控應(yīng)用小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02

