欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

最新IDEA?2022基于JVM極致優(yōu)化?IDEA啟動(dòng)速度的方法

 更新時(shí)間:2022年08月05日 14:37:28   作者:Resourceful!  
這篇文章主要介紹了IDEA?2022最新版?基于?JVM極致優(yōu)化?IDEA?啟動(dòng)速度,需要的朋友可以參考下

IDEA 2022最新版基于 JVM極致優(yōu)化 IDEA 啟動(dòng)速度

1. 引言

相信做 Java 開發(fā)的同學(xué),對 IDEA 這個(gè)工具應(yīng)該都不陌生,即使不使用 IDEA 做開發(fā),那么對 Eclipse 這個(gè)工具應(yīng)該也不會(huì)陌生,如果這兩個(gè)都不用的同學(xué),我就想弱弱問一句,您不會(huì)是在使用記事本吧?

上面除了那個(gè)記事本,我相信所有的同學(xué)都對 IDEA 或者說 Eclipse 這兩個(gè)工具的打開速度深有印象吧。

只要你沒自己改過啟動(dòng)參數(shù),不管電腦多高的配置,我相信這個(gè)打開速度應(yīng)該都快不到哪去。

前面寫了這么多篇的 JVM 相關(guān)內(nèi)容,今天我嘗試優(yōu)化一下 IDEA 的啟動(dòng)速度(手頭沒有 Eclipse ),這算是小試牛刀,希望最后不要翻車。

2. 開始

我使用的是 JDK 自帶的 VisualVM 可視化工具,主要使用的是它的那個(gè) GC 插件。

首先第一次打開 IDEA ,加載時(shí)長按照 IDEA 所有組件加載完成進(jìn)行人工卡點(diǎn)(本來想找個(gè)插件的,結(jié)果 IDEA 這方面的插件還真沒找到)。

IDEA 在打開的過程中,右下角會(huì)有一個(gè)進(jìn)度條在一直讀條,我就大約等那個(gè)條讀完了進(jìn)行計(jì)時(shí)。

后續(xù)操作的過程中發(fā)現(xiàn)其實(shí)完全沒必要,因?yàn)椴罹嗪喼碧黠@了。

首先在默認(rèn)配置的情況下第一次打開 IDEA ,然后看下 VisualVM 的數(shù)據(jù)圖:

GC 情況:

概覽情況:

我直接被這個(gè) Class Loader 加載速度驚呆了,活活消耗了 3m 34s 的時(shí)間,由于其他操作都是并行的,這一項(xiàng)的耗時(shí)直接撐破天了。

不過同時(shí)可以看到 GC 的消耗,好像并不是很大, Minor GC 發(fā)生了 147 次,但是 Full GC 一次都沒有發(fā)生過,共計(jì)耗時(shí) 712ms 。

但是看到下面的概覽圖還是能發(fā)現(xiàn)一些端倪的,就比如當(dāng)前堆大小在一直不停的擴(kuò)容。

先找到 IDEA 的配置文件,看下默認(rèn)配置,我本地的路徑是 D:\Program Files\JetBrains\apps\IDEA-U\ch-0 ,這個(gè)路徑每個(gè)人都不一樣,大家自己找自己的,找到以后打開 idea64.exe.vmoptions 這個(gè)文件:

-Xms128m
-Xmx750m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-XX:CICompilerCount=2
-Dsun.io.useCanonPrefixCache=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Djdk.attach.allowAttachSelf=true
-Dkotlinx.coroutines.debug=off
-Djdk.module.illegalAccess.silent=true

可以看到最小堆是設(shè)置 128MB ,而最大堆是 750MB ,使用的是 CMS 收集器,我使用的電腦硬件內(nèi)存是 16GB ,這么大的內(nèi)存空間,果斷直接把最小堆改成 1G ,最大堆改成 2G ,關(guān)掉 IDEA 再重啟看下效果。

修改后的配置如下:

-Xms1g
-Xmx2g
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50

GC 情況:

概覽情況:

可以看到,Class Loader 時(shí)長瞬間就下來了,從 3m 變成了 24s ,并且 Minor GC 的時(shí)長整整縮短了一半,從 712ms 下降到了 342ms ,次數(shù)也由之前的 147 次下降到了現(xiàn)在的 9 次,依然沒有 Full GC 產(chǎn)生(廢話,內(nèi)存開了這么大又填不滿)。

并且看概覽圖的時(shí)候可以看到,堆內(nèi)存擴(kuò)容只擴(kuò)容了一次。

那么還能不能再短點(diǎn)呢?看下整個(gè)圖,感覺 ClassLoader 還有空間嘛,我們還可以把加載時(shí)的驗(yàn)證給關(guān)掉,使用 -Xverify:none ,這樣應(yīng)該還能再降低一些加載的耗時(shí)。

修改后的配置如下:

-Xms1g
-Xmx2g
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-Xverify:none

GC 情況:

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-TbJhzwT7-1659670388731)(https://c1.lmlphp.com/user/master/2020/10/15/b70f015221dc66e421548ed45ae44ce0.jpg)]

概覽情況:

果然,加載時(shí)長從之前的 24s 繼續(xù)下降到了 19s ,差不多減少了有 1/4 左右,還是卓有成效的。

接著我想如果直接把最小堆也設(shè)置成 2G ,那么堆大小就無需擴(kuò)容,會(huì)不會(huì)有更加正向的影響?

修改后的配置如下:

-Xms2g
-Xmx2g
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-Xverify:none

GC 情況:

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-1o44sy8W-1659670388732)(https://c1.lmlphp.com/user/master/2020/10/15/d9d2d0aa8157c552c568e077c769c88f.jpg)]

概覽情況:

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-flkIWGKA-1659670388733)(https://c1.lmlphp.com/user/master/2020/10/15/0726bcc652721803625ce34f90346e4a.jpg)]

實(shí)際上并沒有什么太大成效。

從概覽中可以看到,我當(dāng)前版本的 IDEA 使用的是自帶的 JDK11 :

JDK11 中是有 G1 收集器的,我要么開啟 G1 試一下:

-Xms1g
-Xmx2g
-XX:ReservedCodeCacheSize=240m
-XX:+UseG1GC
-XX:SoftRefLRUPolicyMSPerMB=50
-Xverify:none

GC 情況:

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Mpjef1SR-1659670388733)(https://c1.lmlphp.com/user/master/2020/10/15/45124de759ef88e3050d9456c82abc14.jpg)]

概覽情況:

看起來好像 Minor GC 的耗時(shí)還略有上漲,并且 GC 的次數(shù)從 9 次變成了 19 次。

不過看到概覽圖發(fā)現(xiàn)了一個(gè)更神奇的事情,當(dāng)使用 G1 的時(shí)候,整個(gè)使用堆大小竟然沒有突破 1G ,看來電腦內(nèi)存不夠大的同學(xué)更加推薦使用 G1 回收器,雖然 GC 的耗時(shí)稍有增加,不過能減少內(nèi)存的使用,而 G1 的 GC 機(jī)制又是大量并行的,這點(diǎn)根本無傷大雅。

最后我放一下我修改后的整體的配置:

 -Dide.no.platform.update=true
-Dtoolbox.notification.token=ZATtXMyB3ZsNhTvmYivkW7tYp5ZT4GlqKFIx3Bp4_Ik=
-Dtoolbox.notification.portFile=D:\IDEA\apps\IDEA-U\ch-0\222.3345.118.vmoptions.port
-Didea.plugins.path=D:\\IDEA\\apps\\IDEA-U\\ch-0\\222.3345.118.plugins

# 上面部分為最新版本IDEA 默認(rèn)配置,保留即可,新增下面這些配置即可
-Xms6g
-Xmx8g
-XX:ReservedCodeCacheSize=2048m
-XX:+UseG1GC
-XX:SoftRefLRUPolicyMSPerMB=50
-Xverify:none
-ea
-XX:CICompilerCount=2
-Dsun.io.useCanonPrefixCache=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Dkotlinx.coroutines.debug=off
-Djdk.module.illegalAccess.silent=true
-Dide.no.platform.update=true
-Djdk.attach.allowAttachSelf=true
-Dfile.encoding=UTF-8

當(dāng)然,如果不用 IDEA 的同學(xué),只要是用 Jetbrain 全家桶套件,例如寫 Python 最常用的 Pycharm ,同樣也可以按照本文的方式進(jìn)行配置,我自己又給 Pycharm 修改了一下配置,啟動(dòng)速度絕對大幅提升,肉眼可見的那種。

結(jié)語

到此這篇關(guān)于最新IDEA 2022基于JVM極致優(yōu)化 IDEA啟動(dòng)速度的文章就介紹到這了,更多相關(guān)idea200優(yōu)化 IDEA啟動(dòng)速度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot使用Spring Security實(shí)現(xiàn)登錄注銷功能

    SpringBoot使用Spring Security實(shí)現(xiàn)登錄注銷功能

    這篇文章主要介紹了SpringBoot使用Spring Security實(shí)現(xiàn)登錄注銷功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-09-09
  • SpringBoot整合Retry實(shí)現(xiàn)錯(cuò)誤重試過程逐步介紹

    SpringBoot整合Retry實(shí)現(xiàn)錯(cuò)誤重試過程逐步介紹

    重試的使用場景比較多,比如調(diào)用遠(yuǎn)程服務(wù)時(shí),由于網(wǎng)絡(luò)或者服務(wù)端響應(yīng)慢導(dǎo)致調(diào)用超時(shí),此時(shí)可以多重試幾次。用定時(shí)任務(wù)也可以實(shí)現(xiàn)重試的效果,但比較麻煩,用Spring Retry的話一個(gè)注解搞定所有,感興趣的可以了解一下
    2023-02-02
  • SpringBoot?HikariCP配置項(xiàng)及源碼解析

    SpringBoot?HikariCP配置項(xiàng)及源碼解析

    這篇文章主要為大家介紹了SpringBoot?HikariCP配置項(xiàng)及源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • springboot啟動(dòng)不了也不報(bào)錯(cuò)的問題及解決

    springboot啟動(dòng)不了也不報(bào)錯(cuò)的問題及解決

    這篇文章主要介紹了springboot啟動(dòng)不了也不報(bào)錯(cuò)的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java中equals方法使用及重寫練習(xí)

    Java中equals方法使用及重寫練習(xí)

    equals是在object類中的方法,在object中equals是用來看看兩個(gè)參數(shù)是否引用的是同一個(gè)對象,下面這篇文章主要給大家介紹了關(guān)于Java中equals方法使用及重寫練習(xí)的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • lambda表達(dá)式解決java后臺分組排序過程解析

    lambda表達(dá)式解決java后臺分組排序過程解析

    這篇文章主要介紹了lambda表達(dá)式解決java后臺分組排序過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • java實(shí)現(xiàn)簡易貪吃蛇游戲

    java實(shí)現(xiàn)簡易貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡易貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Java實(shí)現(xiàn)開箱即用的redis分布式鎖

    Java實(shí)現(xiàn)開箱即用的redis分布式鎖

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)開箱即用的基于redis的分布式鎖,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以收藏一下
    2022-12-12
  • Spring Boot讀取自定義配置文件

    Spring Boot讀取自定義配置文件

    在Spring Boot項(xiàng)目中我們經(jīng)常需要讀取application.yml配置文件的自定義配置,今天就來羅列一下從yaml讀取配置文件的一些常用手段和方法。
    2021-05-05
  • 深入淺析Mybatis的缺陷問題

    深入淺析Mybatis的缺陷問題

    Mybatis是業(yè)界非常流行的持久層框架,輕量級、易用,在金融IT領(lǐng)域完全是領(lǐng)軍地位,比Hibernate更受歡迎,優(yōu)勢非常多,也是非常值得我們學(xué)習(xí)的。這篇文章主要介紹了Mybatis的缺陷問題的相關(guān)資料,需要的朋友可以參考下
    2016-10-10

最新評論