idea中的jvm調(diào)優(yōu)方式
1、背景
idea作為一個高頻使用的java IDE。
性能的好壞,影響著開發(fā)的心情。
工欲善其事必先利其器。
2、優(yōu)化后的參數(shù)
優(yōu)化后的感覺是拙匠常怪工具差。
明明可以流暢的編碼,為啥之前選擇的是默默忍受,不去改變。
真的是流暢了很多。
當(dāng)前電腦的配置是 windows i5 8核16G
# custom IntelliJ IDEA VM options # 堆大小,按常規(guī)操作,設(shè)成相同的,避免自動擴(kuò)容 -Xms1536m -Xmx1536m # 年輕代大小,Sun推薦設(shè)置為堆大小的3/8 -Xmn576m # 在JVM啟動時即預(yù)初始化堆中的所有頁,能夠快速利用 -XX:+AlwaysPreTouch # 設(shè)置一個較大的元空間初始值,避免頻繁GC擴(kuò)容 -XX:MetaspaceSize=256m # 元空間最大默認(rèn)不限制,設(shè)一個值保護(hù)一下 -XX:MaxMetaspaceSize=768m # 啟用G1 GC # -XX:+UseG1GC # 啟用CMS GC -XX:+UseConcMarkSweepGC # CMS并行標(biāo)記,降低標(biāo)記階段停頓時間 -XX:+CMSParallelRemarkEnabled # 重新標(biāo)記前先執(zhí)行一次新生代GC -XX:+CMSScavengeBeforeRemark # 觸發(fā)CMS GC的堆內(nèi)存占用比例,調(diào)大點(diǎn)以降低GC頻率 -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly # 對象晉升到老年代的年齡,默認(rèn)15。根據(jù)觀察,對IDEA來說設(shè)成10就足夠了 -XX:MaxTenuringThreshold=10 # 壓縮普通對象指針 -XX:+UseCompressedOops # 指定服務(wù)器版JIT編譯器,其實(shí)不用寫,默認(rèn)已經(jīng)是了 -server # JIT代碼緩存的大小,默認(rèn)是240M -XX:ReservedCodeCacheSize=360M # 打開JIT分層編譯,默認(rèn)是開啟的了 -XX:+TieredCompilation # 每MB堆空間中的軟引用能夠存活的近似毫秒數(shù) -XX:SoftRefLRUPolicyMSPerMB=50 # OOM時輸出堆dump轉(zhuǎn)儲文件 -XX:+HeapDumpOnOutOfMemoryError # 禁止把某些異常的stack trace優(yōu)化掉,防止信息被吃了找不到問題 -XX:-OmitStackTraceInFastThrow # 禁用字節(jié)碼驗(yàn)證。IDEA的代碼足夠可靠,不用驗(yàn)證 -Xverify:none # 啟用斷言機(jī)制(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ā)工具自帶的,不建議修改,因?yàn)樯壍臅r候會進(jìn)行覆蓋
- cutom vm options是用戶自定義的,是留給使用者個性化配置的。默認(rèn)保存在用戶目錄下的 .IntelliJIdea2019.2/config
- 實(shí)際操作是idea.exe.vmoptions是全局的配置,cutom vm options會對定義的配置進(jìn)行覆蓋
4、修改配置后無法啟動
報(bào)錯的信息如下:
MaxJavaStackTraceDepth=-1 is outside the allowed range,本質(zhì)是配置文件的格式不正確或包含了不能被識別的屬性。
實(shí)際上的 -XX:+UseParNewGC:設(shè)置年輕代為多線程收集 這個屬性被廢棄了。
idea自帶的jdk是jdk11,所以是不包含這個屬性的。
與表象是一致的。
idea jvm調(diào)優(yōu),MaxJavaStackTraceDepth=-1 is outside the allowed range
還在使用idea的默認(rèn)jvm參數(shù)嗎?那么是時候動手優(yōu)化一下你的idea了,體驗(yàn)一下飛一般的感覺。
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
string boot 與 自定義interceptor的實(shí)例講解
下面小編就為大家分享一篇string boot 與 自定義interceptor的實(shí)例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12Spring Boot 員工管理系統(tǒng)超詳細(xì)教程(源碼分享)
這篇文章主要介紹了Spring Boot 員工管理系統(tǒng)超詳細(xì)教程(源碼分享),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05Mybatis-Spring連接mysql 8.0配置步驟出錯的解決方法
這篇文章主要為大家詳細(xì)介紹了Mybatis-Spring連接mysql 8.0配置步驟出錯的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06Java中JDom解析XML_動力節(jié)點(diǎn)Java學(xué)院整理
JDOM是一種解析XML的Java工具包。DOM適合于當(dāng)今流行的各種語言,包括Java,JavaScripte,VB,VBScript,Perl,C,C++等。下面通過本文給大家介紹Java中JDom解析XML的方法,感興趣的朋友一起學(xué)習(xí)吧2017-07-07SpringCloud之@FeignClient()注解的使用詳解
@FeignClient是SpringCloud中用于聲明一個Feign客戶端的注解,用于解決模塊方法互相調(diào)用的問題,Feign是一個聲明式的WebService客戶端,通過Feign,只需要創(chuàng)建一個接口,并使用注解來描述請求,就可以直接執(zhí)行HTTP請求了2024-11-11Springboot使用thymeleaf動態(tài)模板實(shí)現(xiàn)刷新
這篇文章主要介紹了Springboot使用thymeleaf動態(tài)模板實(shí)現(xiàn)刷新,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08