亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

IntelliJ IDEA卡死,如何優化內存

2024-07-21 02:03:22
字體:
來源:轉載
供稿:網友

本文作者在和同事的一次討論中發現,對 IntelliJ IDEA 內存采用不同的設置方案,會對 IDE 的速度和響應能力產生不同的影響。

Don't be a Scrooge and give your IDE some more memory

不要做守財奴,給IDE多留點內存吧。

昨天,大家就是否自定義 IntelliJ IDEA 的內存設置進行了討論,有些人選擇默認設置,有些人會對默認的設置進行簡單的變更,還有一些開發者會基于他們的需求進行全面復雜的設置。筆者目前的工作是處理幾個微服務項目和一個老項目,而客戶的核心業務需求非常大。對 IntelliJ IDEA 內存進行簡單設置以后,筆者明顯感受到了該 IDE 在速度和響應方面的改善。但當時筆者并未進行具體的測量,所以這只是主觀感受而已。

不過,參與討論的一位開發者給筆者發了一份他的設置,雖然是針對同個項目,該設置卻極其復雜。筆者對自己的設置并無不滿,但非常好奇,這些完全不同的設置對比 JetBrains 提供的默認設置,會有怎樣的不同。

目標

筆者的計劃是,在一個接近日常開發項目的場景下(加載一個大項目、加載2、3個微服務、git pull 后刷新大項目),測試各個設置帶來的效果,并選出內存消耗和速度都達到最優時的最佳設置。

測試機器和項目

筆記本電腦:MacBook Pro Retina, 2.3GHz Intel Core i7, 16GB 1600Mhz DDR3,SSD Disc, OS X Yosemite

項目

大項目―― Monolith ,70萬行代碼( Java 8 和 Groovy ),303個Gradle模塊

兩個微服務――約有10000――20000行代碼( Java 8 和 Groovy )的小項目,各有一個Gradle模塊

測試場景

  • 在 Idea 中關閉所有項目
  • 基于測試文件 idea.vmoptions 進行設置
  • 重啟電腦
  • 啟動后關閉所有不相關的項目( communicators 等等)
  • 打開 Idea(測試時間)
  • 打開大項目(測試時間)
  • 檢查 jstat -gcutil
  • 打開兩個微服務項目(測試時間)
  • 檢查 jstat -gcutil
  • 返回大項目然后點擊“刷新 Gradle 項目”按鈕(測試時間)
  • 檢查 jstat -gcutil

jstat -gcutil

jstat 是 JDK 自帶的工具,主要利用 JVM 內建的指令對 Java 應用程序的資源和性能進行實時的命令行監控,還包括對 Heap size 和垃圾回收狀況的監控。

jstat 完整的文檔:

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html

它有許多選項來收集各種數據,但這里只會用到:-gcutil :

-gcutil - Summary of garbage collection statistics.S0: Survivor space 0 utilization as a percentage of the space's current capacity. S1: Survivor space 1 utilization as a percentage of the space's current capacity. E: Eden space utilization as a percentage of the space's current capacity. O: Old space utilization as a percentage of the space's current capacity. M: Metaspace utilization as a percentage of the space's current capacity. CCS: Compressed class space utilization as a percentage. YGC: Number of young generation GC events. YGCT: Young generation garbage collection time. FGC: Number of full GC events. FGCT: Full garbage collection time. GCT: Total garbage collection time. 

這個命令的輸出結果如下:

S0   S1  E   O   M  CCS YGC YGCT FGC FGCT  GCT 89.70 0.00 81.26 74.27 95.68 91.76 40 2.444 14 0.715 3.159 

在本文中,最重要的參數是 GC 事件( YGC 和 FGC )次數和收集時間( YGCT 和 FGCT )。

測試設置

筆者設置了四種不同的設置,為了好記,給它們起了不同的名字。

默認(灰色標識)

JetBrains 提供的默認設置:

-Xms128m-Xmx750m-XX:MaxPermSize=350m-XX:ReservedCodeCacheSize=240m-XX:+UseCompressedOops

Big(大)(紅色標識)

給 Xmx 配 4096MB, ReservedCodeCacheSize 設置 1024MB,這已經是相當多的內存了:

-Xms1024m-Xmx4096m-XX:ReservedCodeCacheSize=1024m-XX:+UseCompressedOops

Balanced(平衡的)(藍色標識)

Xmx 和 Xms 都分配 2GB ,這是相當平衡的內存消耗:

-Xms2g-Xmx2g-XX:ReservedCodeCacheSize=1024m-XX:+UseCompressedOops

Sophisticated(復雜的)(橘色標識)

和上面一樣, Xmx 和 Xms 都分配2GB,但是給 GC 和內存管理指定不同的垃圾回收器和許多不同的標志:

-server-Xms2g-Xmx2g-XX:NewRatio=3-Xss16m-XX:+UseConcMarkSweepGC-XX:+CMSParallelRemarkEnabled-XX:ConcGCThreads=4-XX:ReservedCodeCacheSize=240m-XX:+AlwaysPreTouch-XX:+TieredCompilation-XX:+UseCompressedOops-XX:SoftRefLRUPolicyMSPerMB=50-Dsun.io.useCanonCaches=false-Djava.net.preferIPv4Stack=true-Djsse.enableSNIExtension=false-ea

以上便是筆者的測試設置,為了執行該測試用例,還需要在~/Library/Preferences/IntelliJIdea15/下創建一個idea.vmoptions文件(這是 Mac OS 系統下的路徑設置,基于你的操作系統進行設置,關注公眾號:Java面試那些事兒,回復關鍵字idea,獲取最新的idea教程)

現在,執行測試用例并比較結果。

結果

Idea啟動時間

正如上圖所示,啟動時間并不依賴于內存設置。Idea 在所有場景下的測試時間都是10秒,無論內存分配有多少。這并不足為奇,因為在此早期階段,這些設置并不會影響到應用的行為。更多IDEA內容:IntelliJ IDEA 2020.1 已正式發布

加載大項目花費的時間

現在加載 Monolith 項目及其70萬行代碼。終于,出現了一些的差異。默認設置所花費的時間幾乎是其它的3倍。很明顯,如此龐大的代碼庫需要更多的內存。如果我們執行:

jstat -gcutil <IDEA_PID> 

會發現,對比其它設置, GC 在默認設置下會變得異常忙碌。

不僅 GC 釋放內存的總時間非常高(幾乎達到了50倍),而且 Full GC 的平均執行時間也非常非常長。大量的時間都花在了 Full GC 上面,這是 IDE 響應速度低的主要原因。

在IDEA中打開兩個微服務

現在加載這兩個微服務項目,在 IDEA 中打開并且對比他們所消耗的時間。

在這個測試用例下,差異還是非常明顯的,復雜設置表現最佳,而默認設置仍舊輸給了其他兩種設置。

再次使用jstat 亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

日韩欧美福利视频| 国产精品久久久久久久久久久不卡| 日韩成人性视频| 国产精品av免费在线观看| 欧美巨大黑人极品精男| 国产精品成人va在线观看| 自拍偷拍免费精品| 日韩高清电影免费观看完整| 97精品欧美一区二区三区| 综合久久五月天| 亚洲xxxx3d| 久久99亚洲精品| 欧美日韩亚洲一区二| 久久久久久久久久久成人| 日韩精品免费观看| 国产成人精品一区| 一区二区三区视频免费| 亚洲国产精品va在看黑人| 久久久久久久999| 国产suv精品一区二区三区88区| 欧美成人全部免费| 日韩av在线播放资源| 91牛牛免费视频| 日韩视频免费在线观看| 97精品伊人久久久大香线蕉| 91深夜福利视频| 亚洲欧美制服另类日韩| 国产一区二区黄| 欧美高清视频一区二区| 国产成人精品免高潮费视频| 热99精品里视频精品| 欧美日韩亚洲精品一区二区三区| 亚洲第一黄色网| 国产福利视频一区| 91高潮在线观看| 久久久久久亚洲精品| 国产精品一区二区电影| 欧美大秀在线观看| 久久久久99精品久久久久| 精品香蕉在线观看视频一| 午夜精品视频在线| 亚洲影视九九影院在线观看| 欧美成人免费va影院高清| 成人h片在线播放免费网站| 懂色av中文一区二区三区天美| 欧美电影免费看| 日韩av综合中文字幕| 成人免费大片黄在线播放| 久久久久久久久久久成人| 久久九九精品99国产精品| 欧美精品videosex极品1| xxx成人少妇69| 高清欧美性猛交xxxx黑人猛交| 日韩精品免费在线观看| 欧洲午夜精品久久久| 国产suv精品一区二区三区88区| 91视频88av| 日韩精品极品视频免费观看| 日本久久中文字幕| 欧美精品生活片| 国产成人精品免高潮在线观看| 91精品视频一区| 另类专区欧美制服同性| 亚洲成成品网站| 国产91精品网站| 欧美日本黄视频| 欧美激情综合色综合啪啪五月| 国产性猛交xxxx免费看久久| 国产91色在线免费| 国产一区红桃视频| 深夜福利一区二区| 亚洲乱码国产乱码精品精天堂| 国a精品视频大全| 亚洲石原莉奈一区二区在线观看| 久久视频国产精品免费视频在线| 国产免费一区二区三区香蕉精| 欧美大片免费看| 狠狠爱在线视频一区| 亚洲欧美www| 日本精品久久电影| 久久99精品视频一区97| 亚洲白拍色综合图区| 国产综合福利在线| 亚洲精品美女久久| 国产色视频一区| 91中文字幕在线| 色妞一区二区三区| 2018中文字幕一区二区三区| 日韩精品亚洲精品| 最近免费中文字幕视频2019| 欧美在线免费看| 日韩精品中文字幕久久臀| 51ⅴ精品国产91久久久久久| 日韩中文字幕亚洲| 精品久久久久久亚洲精品| 国产盗摄xxxx视频xxx69| 九九热精品视频在线播放| 久久久天堂国产精品女人| 国产一区二区三区高清在线观看| xxxx欧美18另类的高清| 国产亚洲精品综合一区91| 亚洲xxxxx| 亚洲欧美自拍一区| 日韩av在线精品| 久久亚洲欧美日韩精品专区| 毛片精品免费在线观看| 色悠悠久久88| 国产成人精彩在线视频九色| 97香蕉超级碰碰久久免费的优势| 国产69精品久久久久99| 欧美日韩福利视频| 精品久久久久久国产91| 亚洲国产日韩一区| 欧美亚洲在线视频| 国产精品嫩草影院一区二区| 亚洲精品小视频在线观看| 中文字幕日韩欧美精品在线观看| 亚洲欧美激情精品一区二区| 最近2019年好看中文字幕视频| 欧美激情精品久久久久久免费印度| 精品香蕉在线观看视频一| 亚洲人成免费电影| 精品福利在线视频| 欧美激情欧美激情| 91视频国产一区| 欧美日韩高清在线观看| 亚洲最大的免费| 午夜精品免费视频| 欧美极品第一页| 国自产精品手机在线观看视频| 91精品国产色综合久久不卡98口| 一区二区在线免费视频| 欧美成人亚洲成人日韩成人| www.美女亚洲精品| 日韩免费在线播放| 国产精品久久久精品| 欧美精品videosex性欧美| 亚洲九九九在线观看| 美女性感视频久久久| 亚洲精品久久7777777| 久久久久久69| 国产99久久精品一区二区| 国内精品在线一区| 亚洲一区二区免费在线| 992tv成人免费视频| 国产成人一区二区在线| 日韩中文第一页| 色妞色视频一区二区三区四区| 日韩欧美一区二区三区| 久久九九精品99国产精品| 国产精品人成电影| 亚洲黄色成人网| 亚洲精品视频久久| 青青在线视频一区二区三区| 亚洲一区二区三区四区视频| 国产一区红桃视频| 久久99精品视频一区97| 亚洲无亚洲人成网站77777| 伊人青青综合网站| 91av福利视频| 91在线观看免费高清完整版在线观看| 欧美在线免费观看| 国产精品人人做人人爽| 夜夜躁日日躁狠狠久久88av|