成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存

瀏覽:2日期:2024-08-29 09:09:09

本文作者在和同事的一次討論中發(fā)現(xiàn),對 IntelliJ IDEA 內(nèi)存采用不同的設(shè)置方案,會對 IDE 的速度和響應(yīng)能力產(chǎn)生不同的影響。

IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存

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

不要做守財(cái)奴,給IDE多留點(diǎn)內(nèi)存吧。

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

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

目標(biāo)

筆者的計(jì)劃是,在一個接近日常開發(fā)項(xiàng)目的場景下(加載一個大項(xiàng)目、加載2、3個微服務(wù)、git pull 后刷新大項(xiàng)目),測試各個設(shè)置帶來的效果,并選出內(nèi)存消耗和速度都達(dá)到最優(yōu)時的最佳設(shè)置。

測試機(jī)器和項(xiàng)目

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

項(xiàng)目

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

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

測試場景

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

jstat -gcutil

jstat 是 JDK 自帶的工具,主要利用 JVM 內(nèi)建的指令對 Java 應(yīng)用程序的資源和性能進(jìn)行實(shí)時的命令行監(jiān)控,還包括對 Heap size 和垃圾回收狀況的監(jiān)控。

jstat 完整的文檔:

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

它有許多選項(xiàng)來收集各種數(shù)據(jù),但這里只會用到:-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.

這個命令的輸出結(jié)果如下:

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

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

測試設(shè)置

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

默認(rèn)(灰色標(biāo)識)

JetBrains 提供的默認(rèn)設(shè)置:

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

Big(大)(紅色標(biāo)識)

給 Xmx 配 4096MB, ReservedCodeCacheSize 設(shè)置 1024MB,這已經(jīng)是相當(dāng)多的內(nèi)存了:

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

Balanced(平衡的)(藍(lán)色標(biāo)識)

Xmx 和 Xms 都分配 2GB ,這是相當(dāng)平衡的內(nèi)存消耗:

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

Sophisticated(復(fù)雜的)(橘色標(biāo)識)

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

-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

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

現(xiàn)在,執(zhí)行測試用例并比較結(jié)果。

結(jié)果

Idea啟動時間

IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存

正如上圖所示,啟動時間并不依賴于內(nèi)存設(shè)置。Idea 在所有場景下的測試時間都是10秒,無論內(nèi)存分配有多少。這并不足為奇,因?yàn)樵诖嗽缙陔A段,這些設(shè)置并不會影響到應(yīng)用的行為。更多IDEA內(nèi)容:IntelliJ IDEA 2020.1 已正式發(fā)布

加載大項(xiàng)目花費(fèi)的時間

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

jstat -gcutil <IDEA_PID>

會發(fā)現(xiàn),對比其它設(shè)置, GC 在默認(rèn)設(shè)置下會變得異常忙碌。

IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存

IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存

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

在IDEA中打開兩個微服務(wù)

現(xiàn)在加載這兩個微服務(wù)項(xiàng)目,在 IDEA 中打開并且對比他們所消耗的時間。

IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存

在這個測試用例下,差異還是非常明顯的,復(fù)雜設(shè)置表現(xiàn)最佳,而默認(rèn)設(shè)置仍舊輸給了其他兩種設(shè)置。

再次使用jstat ?gcutil

加載完兩個微服務(wù)項(xiàng)目后,來檢查一下同時打開3個項(xiàng)目的情況下, GC 的表現(xiàn)情況。經(jīng)測試發(fā)現(xiàn),3個不同的自定義設(shè)置表現(xiàn)幾乎差不多,而默認(rèn)設(shè)置簡直弱爆了。

IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存

IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存

最后的角逐:重新加載Monolith

現(xiàn)在,筆者需要從倉庫中獲得 Monolith 項(xiàng)目的最新版本,并且刷新 Gradle 模塊,這樣, IDEA 能看到所有的新類。

IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存

重要提示:代表默認(rèn)設(shè)置的灰色條形柱非常高,因?yàn)?IDEA 在刷新過程中崩潰了,筆者無法測量實(shí)際時間。顯然,默認(rèn)分配的內(nèi)存不足以執(zhí)行該操作。

但從三個自定義例子中可以發(fā)現(xiàn),大內(nèi)存配置花費(fèi)的時間是最短的。所以,內(nèi)存分配還是起到了作用。

最后一次使用jstat-gcutil

因?yàn)?IDEA 在默認(rèn)設(shè)置下無法刷新項(xiàng)目,所以,這次測試默認(rèn)設(shè)置就不包括在里面。

IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存

IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存

從上圖可以看出,三者之間的差異不大,但是 Big 配置下的 Full GC 執(zhí)行時間最快。此外, Xmx 內(nèi)存大些對響應(yīng)能力提升的幫助非常明顯。

總結(jié)

在這次簡短的實(shí)驗(yàn)中,大家可以發(fā)現(xiàn),即使對 IntelliJ IDEA 內(nèi)存進(jìn)行微調(diào),都可以大大提升 IDE 性能。當(dāng)然,內(nèi)存分配越多,執(zhí)行效果就越好。但是,你也會發(fā)現(xiàn), IDE 之外許多其他應(yīng)用程序也需要消耗內(nèi)存,所以,大家的目標(biāo)應(yīng)該是在提高性能和內(nèi)存消耗之間找到一個平衡。

筆者認(rèn)為,在大多數(shù)情況下,把 Xmx 值設(shè)置在 2G 和 3G 之間是最佳的。如果你有更多的時間可以用 jstat 和 jvisualm 檢查用不同的 JVM 設(shè)置如何影響性能和內(nèi)存占用。

討論

你的 idea.vmoptions 是如何配置的呢?你還有其它提高 InteliJ IDEA 性能的方法嗎?不妨一起討論討論吧。

譯者:OneAPM

譯文:blog.oneapm.com/apm-tech/426.html

原文:dzone.com/articles/the-one-and-only-reason-to-customize-intellij-idea

到此這篇關(guān)于IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存的文章就介紹到這了,更多相關(guān)IntelliJ IDEA 優(yōu)化內(nèi)存內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: IDEA
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
久久色.com| 亚洲美女屁股眼交3| 欧美日本亚洲| 99久久777色| 中日韩在线视频| 欧美日韩一级二级| 久久夜色精品国产噜噜av| 国产一区二区三区av电影| 91亚洲精品久久久蜜桃网站| 国产亚洲在线| 精品久久人人做人人爰| 一区二区三区欧美日| 丰满岳乱妇一区二区三区| 国产精品久久777777毛茸茸| 中文字幕亚洲在| 九色综合狠狠综合久久| 国产专区一区| 欧美日韩国产中文| 亚洲丝袜精品丝袜在线| 国产精品一二三在| 国产伦精品一区二区三区| 日韩一级在线观看| 亚洲另类色综合网站| 成人免费福利片| 久久精品日产第一区二区 | 欧美久久久一区| 亚洲精品乱码久久久久久久久| 亚洲婷婷在线| 91麻豆精品国产91久久久久久久久| 亚洲色图在线视频| 黄色日韩在线| 亚洲乱码国产乱码精品精可以看| 影音先锋日韩资源| 欧美电影免费观看高清完整版在| 亚洲国产va精品久久久不卡综合 | 国产日韩欧美不卡| 蜜桃精品视频在线| 欧美久久一级| 中文在线一区二区| 国产不卡在线视频| 26uuu亚洲综合色欧美| 欧美日韩一区在线观看视频| 日韩三级av在线播放| 成人国产视频在线观看| 91国偷自产一区二区三区成为亚洲经典 | 中文字幕一区三区| 99热精品在线观看| 欧美岛国在线观看| 99久久久精品| 中文字幕视频一区| 亚洲欧美电影在线观看| 蜜桃av噜噜一区| 欧美一区二区三区在线观看| 国产午夜精品一区二区| 国产伦精品一区二区三区在线观看| 日韩一区二区三区av| 成人av免费观看| 日韩美女视频一区| 一本久久精品一区二区| 一区二区三区欧美日| 色域天天综合网| 国产成人在线看| 欧美日韩的一区二区| 成人晚上爱看视频| 国产精品毛片a∨一区二区三区| 99久久精品费精品国产一区二区| 国产精品理论片在线观看| 色综合久久综合网97色综合| 欧美一区二区三区免费大片| 欧美国产免费| 久久精品一区二区| 亚洲国产日韩美| 国产精品视频线看| 久久综合影音| 热久久国产精品| 色综合久久久久综合99| 国产一区二区视频在线播放| 国产欧美综合色| 色婷婷综合在线| aaa欧美色吧激情视频| 精品国产一二三| 成人激情免费网站| 亚洲欧美电影一区二区| 欧美日韩国产区一| 91麻豆国产自产在线观看| 亚洲自拍偷拍欧美| 国产日韩专区| 国内精品伊人久久久久av一坑| 欧美三区在线视频| 欧美精品一卡| 日本不卡一二三区黄网| 26uuu成人网一区二区三区| 国产手机视频一区二区| 国产成人亚洲精品青草天美| 亚洲人成电影网站色mp4| 欧美乱妇20p| 在线免费高清一区二区三区| 九九久久精品视频| 国产精品激情偷乱一区二区∴| 欧美日韩综合一区| 在线成人www免费观看视频| 九九久久精品视频| 中文字幕一区免费在线观看| 欧美欧美欧美欧美| 日韩午夜免费视频| 国产一区欧美二区| 一级女性全黄久久生活片免费| 欧美电影免费观看完整版| 亚洲一区3d动漫同人无遮挡| av不卡一区二区三区| 奇米综合一区二区三区精品视频| 中文字幕av一区二区三区免费看 | 欧美午夜不卡影院在线观看完整版免费| 蜜臀久久99精品久久久久久9| 久久精品亚洲国产奇米99| 欧美日韩中文字幕一区二区| 亚洲理论在线| 不卡的av在线播放| 日本美女一区二区| 欧美精品乱码久久久久久按摩| 亚洲裸体视频| 99riav久久精品riav| 久久精品国产在热久久| 欧美一区二区免费观在线| 免费久久久一本精品久久区| 韩国av一区二区三区在线观看| 亚洲精品写真福利| 国产免费久久精品| 日韩欧美国产成人一区二区| 老牛影视一区二区三区| 亚洲每日更新| 97se亚洲国产综合自在线| 韩国av一区二区三区四区| 午夜视频一区二区| 91精品国产欧美一区二区成人| 香蕉久久夜色精品| 国产一区日韩一区| 成人深夜在线观看| 老司机免费视频一区二区| 亚洲一区在线观看网站| 国产精品乱码久久久久久| 精品国产制服丝袜高跟| 欧美久久高跟鞋激| 色婷婷久久综合| 亚洲精品国产精品国自产观看| 97国产一区二区| 粉嫩久久99精品久久久久久夜| 久久精品国产精品亚洲红杏| 天堂在线亚洲视频| 日韩精品一区二区三区在线| 欧美日韩国产大片| 欧美系列日韩一区| 欧美精品偷拍| 成人成人成人在线视频| 国产在线乱码一区二区三区| 卡一卡二国产精品| 日本中文字幕不卡| 偷窥少妇高潮呻吟av久久免费| 亚洲午夜一区二区三区| 亚洲丝袜另类动漫二区| 国产精品久久久久一区二区三区共| 2023国产一二三区日本精品2022| 欧美一区二区三区四区五区| 欧美日本一区二区| 欧美日韩精品电影| 欧美日韩中文国产| 欧美视频一区二区| 欧美日韩一级黄| 欧美日韩亚洲不卡| 欧美精品自拍偷拍| 69精品人人人人| 日韩情涩欧美日韩视频| 欧美一区二区三区播放老司机| 在线不卡的av| 在线播放欧美女士性生活| 欧美欧美欧美欧美| 91麻豆精品国产自产在线观看一区| 欧美电影在线免费观看| 欧美一区二区三区日韩视频| 精品少妇一区二区| 久久久www免费人成精品| 欧美亚洲愉拍一区二区| 在线观看网站黄不卡| 亚洲精品影院| 亚洲精品一区二区三| 国产精品推荐精品| 亚洲欧美日韩国产一区二区| 免费日韩av| 欧美亚洲图片小说| 精品1区2区3区| 日韩一区二区麻豆国产| 欧美剧在线免费观看网站| 91精品国产品国语在线不卡| ww久久中文字幕| 国产女人18水真多18精品一级做| 国产精品色在线| 亚洲靠逼com| 日日欢夜夜爽一区| 国产在线观看一区二区| 成人国产免费视频|