IDEA 卡爆了 !如何優化 ?



在和同事的一次討論中發現,對 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[1] 8 和 Groovy ),303個Gradle模塊兩個微服務——約有10000——20000行代碼( Java 8 和 Groovy )的小項目,各有一個Gradle模塊


測試場景


  1. 在 Idea 中關閉所有項目

  2. 基於測試文件 idea.vmoptions 進行設置

  3. 重啓電腦

  4. 啓動後關閉所有不相關的項目( communicators 等等)

  5. 打開 Idea(測試時間)

  6. 打開大項目(測試時間)

  7. 檢查 jstat -gcutil

  8. 打開兩個微服務項目(測試時間)

  9. 檢查 jstat -gcutil

  10. 返回大項目然後點擊“刷新 Gradle 項目”按鈕(測試時間)

  11. 檢查 jstat -gcutil


jstat -gcutil


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


它有許多選項來收集各種數據,但這裏只會用到:-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 系統下的路徑設置,基於你的操作系統進行設置)

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


結果


Idea啓動時間




正如上圖所示,啓動時間並不依賴於內存設置。


Idea 在所有場景下的測試時間都是10秒,無論內存分配有多少。


這並不足爲奇,因爲在此早期階段,這些設置並不會影響到應用的行爲。



加載大項目花費的時間


現在加載 Monolith 項目及其70萬行代碼。


終於,出現了一些的差異。


默認設置所花費的時間幾乎是其它的3倍。


很明顯,如此龐大的代碼庫需要更多的內存。


如果我們執行:

jstat -gcutil <IDEA_PID>


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





不僅 GC 釋放內存的總時間非常高(幾乎達到了50倍),而且 Full GC 的平均執行時間也非常非常長。


大量的時間都花在了 Full GC 上面,這是 IDE 響應速度低的主要原因。


在IDEA中打開兩個微服務


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





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


再次使用jstat –gcutil


加載完兩個微服務項目後,來檢查一下同時打開3個項目的情況下, GC 的表現情況。


經測試發現,3個不同的自定義設置表現幾乎差不多,而默認設置簡直弱爆了。





最後的角逐:重新加載Monolith


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





重要提示:代表默認設置的灰色條形柱非常高,因爲 IDEA 在刷新過程中崩潰了,筆者無法測量實際時間。


顯然,默認分配的內存不足以執行該操作。


但從三個自定義例子中可以發現,大內存配置花費的時間是最短的。


所以,內存分配還是起到了作用。


最後一次使用jstat-gcutil


因爲 IDEA 在默認設置下無法刷新項目,所以,這次測試默認設置就不包括在裏面。





從上圖可以看出,三者之間的差異不大,但是 Big 配置下的 Full GC 執行時間最快。


此外, Xmx 內存大些對響應能力提升的幫助非常明顯。


總結


在這次簡短的實驗中,大家可以發現,即使對 IntelliJ IDEA 內存進行微調,都可以大大提升 IDE 性能。


當然,內存分配越多,執行效果就越好。


但是,你也會發現, IDE 之外許多其他應用程序也需要消耗內存,所以,大家的目標應該是在提高性能和內存消耗之間找到一個平衡。


筆者認爲,在大多數情況下,把 Xmx 值設置在 2G 和 3G 之間是最佳的。


如果你有更多的時間可以用 jstat 和 jvisualm 檢查用不同的 JVM 設置如何影響性能和內存佔用。

收外國男騙中國妹子的炮?天朝竟有這樣一幫「女權組織」 2018-03-19 INSIGHT視界 From 酷玩實驗室 微信號:coollabs 其實我讀書的時候 也曾經想過做一個女權主義者 但是後來發生了一些事情 讓我選擇了放棄 簡單來說是這麼一個事情:我發現 女權對於一些中國人來說是信仰 但是對另一些中國人來說是生意 所謂的“僞女權”“女權癌” 大概就是這麼回事 儘管早就有這樣的思想準備 但讓我沒想到的是 這兩天,知乎上曝光了一件大事 還是讓我三觀震碎 我沒想到,這些“僞女權” 竟然已經形成了黑色產業鏈 讓人細思恐極—— 國內竟然有一羣人 打着“女權主義”的名號 從事着組織賣淫的事情 在中國女生不知情的情況下 把她們賣給外國男人!事情是這樣的:根據知乎用戶伊利丹·怒風的爆料 他在知乎和一個僞女權主義者 吵了起來 一開始,他可能以爲這只是一個 腦子比較軸的僞女權主義者 所以兩人就吵了一通 本來,他以爲就是撕個逼而已 沒想到的是 這個僞女權主義者 可不是什麼好惹的主 這個自稱爲“瑪麗女王”的人 竟然在半個月中 持續不斷地騷擾他 而最誇張的是 瑪麗女王聲稱 自己有能力 讓伊利丹的QQ號 在5天之內被封掉 到這裏爲止 伊利丹一直以爲 他不過是碰到了一個槓精 但是萬萬沒想到 5天之後 他的QQ號竟然真的被永久封禁了!說真的,這就有點嚇人了 這個不起眼的瑪麗女王 竟然還能操控別人的QQ賬號被封?難不成,她真的背後有人?伊利丹這才意識到 自己好像惹到了一個組織 他去扒了扒這個瑪麗女王的QQ空間 這才發現 自己簡直捅出一個馬蜂窩:這個人平時乾的 竟然是把中國女生 賣給外國男人的皮肉生意!真的,我本來以爲 我是一個見過不少套路的人 但沒想到 這一套操作 真的是驚爲天人 簡單來說是這樣的 首先,瑪麗女王自稱是“女權主義者” 但是實際上她的言論 宣傳的卻是 中國男人配不上中國女人 她甚至惡意辱罵中國男人 恨不得中國男人全部死光 連自己的爸爸都不放過 但是,這麼做對她有什麼好處呢?很簡單 罵完中國男人以後 接下來她就說—— 既然中國男人這麼差勁 那就找外國男人吧!於是,她就經常發佈外國男人的介紹 看起來是一個熱心的媒婆 還在各種QQ和微信羣裏 散播此類信息 但是看到這裏 我們不難發現有點問題 看看其中這些不堪入目的措辭 這並不是普通的介紹男友啊!這簡直是在拉皮條啊!果然,伊利丹發現 瑪麗女王真的在 拉皮條的過程中 收外國男人的錢!下面是聊天記錄實錘:而且,請注意—— 在這個過程中 她會收外國男人的錢 但是錢不給中國女生 卻落到了她自己的腰包 於是一個詭異的情況出現了:中國妹子 並不知道收錢這回事 還以爲是正常交友 而外國男人 卻都交了錢 很可能認爲自己是在買 春!額,也就是說 在中國女孩不知情的情況下 她們被“賣”給了外國男人 而好處費 卻全都進了瑪麗女王的腰包... 我真的是沒見過這種操作 這說輕了是騙炮 說重了,已經可以算是賣淫了吧?我想請熟悉刑法的朋友們看看 這個瑪麗女王 至少應該算是個 介紹組織賣淫罪吧?而且,從伊利丹曝光的資料看來 這個組織規模不小 瑪麗女王甚至把外國男生的信息 建了一個完整的表格 有詳細的個人資料、照片 可以說 是一條非常完整的產業鏈 那如果按照這樣操作 外國男人都是來嫖的 中國女生卻不知道 還以爲是要跟他們談戀愛 那雙方難道不會穿幫嗎?恩,在這方面 瑪麗女王早有對策 根據知乎一位 從事過這個產業的匿名用戶提供的信息 針對這種情況 瑪麗女王們 還會手把手地教外國男人 怎麼快速擺脫女生的糾纏 怎麼調教中國女生 怎麼讓女生覺得自己很可愛 可以說 各種套路一應俱全 甚至還可以開發票!看到這裏 她們背後的產業就非常清楚了 這個瑪麗女王 她根本就不是什麼女權主義者 而是打着女權主義的口號 販賣中國女生的人販子 一方面 她們通過辱罵中國男人 吸引對外國男人感興趣的中國女生 另一方面 她們向外國男人收錢 然後把中國女生賣給他們!圖片來源:知乎@渭水徐工 而可憐的中國妹子們 還以爲自己是在 追求男女平權 其實,不過是淪爲了 這些老鴇的賺錢工具 伊利丹把這整個事情 寫出來以後 在知乎、微博引起了巨大的關注 關於其中提到的 伊利丹的QQ被永久封禁的問題 騰訊經過覈查 目前也有了結果:經調查,是瑪麗女王利用僞造證據 惡意舉報了伊利丹的QQ號 目前,騰訊已經將伊利丹的QQ解封 同時封禁了瑪麗女王等人的 兩個QQ賬號 警方也就此事立案偵查了 相信很快就會有結果 這個事情算是告一段落了 但是在我看來 卻有一件事讓我無法釋懷:爲什麼“女權主義”竟然會和 辱罵中國男性等同起來?爲什麼“和外國男人交友” 竟然還能演變成 一個免費的陪睡組織?我想,這個瑪麗女王 也許只是一個 發現了惡性賺錢模式的生意人 但是在這背後隱藏的 其實是一個很深的問題:爲什麼有不少中國女人 越來越看不上中國男人 甚至覺得嫁給外國男人 是一種時尚?這裏面的原因可能非常複雜 我這裏先提供一個思路 供大家討論:我發現 現在中國很多大型的女權組織 背後都有着西方勢力的影子 她們打着女權的名號 爲自己謀取暴利 爲西方國家從事破壞活動 而那些真正爲女性平權而奔走的人 卻得不到應有的幫助 我之所以這樣說 並不是信口開河 而是有充足的證據 有一個非常有名的民間女權組織 叫做“女權之聲” 它一再聲稱 自己只是一個自發的民間組織 致力於促進男女平等的 它所有的微博賬號、微信賬號 全部都是由一個 叫做婦女傳媒監測網絡的創辦的 而這個婦女傳媒監測網絡 有這麼多媒體產品 那它的錢都是哪裏來的呢?從她們介紹的合作組織裏 我們可以清楚地找到 她們的資助者—— 竟然有西方的福特基金會 有人也許會問 收了西方的錢怎麼了?中國的組織不能收西方的錢嗎?然而,她們不只是收了西方的錢而已 女權之聲組織裏 有一個人叫做鄭楚然 她除了女權運動之外 沒有任何其他工作 表面上,是一個全職的女權工作者 在2015年的時候 她還因爲尋釁滋事 被警察拘留過30多天 甚至在她被拘留的時候 希拉里還借題發揮 指責中國侵犯人權、壓制民主 一箇中國的小小民間組織的首領 在互聯網上的粉絲還沒有我多 竟然能得到希拉里這個級別的關注?我真的是驚掉了下巴 這樣看來 我離希拉里也不是很遠了??而不止是希拉里 這樣一個明明思想上毫無建樹的人 卻被西方媒體BBC評爲了 全球百大思想家 圖:鄭楚然在王寶強事件中發表的言論 除此以外 更讓人匪夷所思的 是她們平時就喜歡攻擊政府 甚至於,她們還會試圖分裂我們國家 比如,女權之聲這個組織裏 著名的女權鬥士洪理達 就曾經轉發著名的港獨媒體 Hong Kong Free Press的言論 甚至曾公開發表過 支持藏獨、港獨、臺獨的言論 她也經常和鄭楚然混在一起 我很想不通 如果她們真的只是單純的女權主義者 爲何要發表分裂國家的言論?爲何要支持藏獨、港獨、臺獨?我只能說,這大概就叫 拿人家的手短,喫人家的嘴軟吧 以前,我在接觸中國的女權組織時 我就覺得很奇怪 她們都喜歡聲稱 自己是不盈利的非政府組織 但是她們無論是宣傳 還是組織各類活動 都需要大量的錢 如果她們真的不盈利 那這些錢都是哪裏來的呢?而這些外國的金主 他們也更加不可能是什麼慈善組織 大發善心來給中國人投錢 每一分投出去的錢 一定都是要有回報的 那麼,他們的回報是什麼呢?他們給中國的“女權組織”投錢 能得到什麼利益呢?聯想到中國網絡上 如火如荼的對中國男人的討伐 我只能說,細思恐極 我絕不是危言聳聽 因爲我們就看不遠的鄰國日本 近些年來日本對於西方的崇拜 可謂深入骨髓 已經到了崇洋媚外的程度 而這其中 當然也包括對白人男性的崇拜 甚至在2016年一個瑞士白人 發了一個視頻,赤裸裸的說 “在東京,只要你是白人, 做什麼都可以” 視頻裏面他在日本便利店 隨意的親吻不認識的收銀員女孩 在酒吧把不認識的日本女孩 按向自己的褲襠 而日本女孩迴應的卻是諂媚的笑容 我想,並不會有那麼多中國人 真正被西方僞女權主義控制 但是,我們要警惕的是 別在你自己都沒有察覺的時候 被別有用心的人洗了腦 更有甚者 別在你自己都不知道的情況下 被別人賣給了外國男人 還去幫他數錢 本文系授權發佈,From 酷玩實驗室,微信號:coollabs,歡迎分享到朋友圈,未經許可不得轉載,INSIGHT視界 誠意推薦 Forwarded from Official Account 酷玩實驗室 酷玩實驗室 Learn More Scan QR Code via WeChat to follow Official Account 採集文章採集樣式近似文章查看封面

來自:https://dzone.com/articles/the-one-and-only-reason-to-customize-intellij-idea


IT技術分享社區


個人博客網站:https://programmerblog.xyz


文章推薦 程序員效率:畫流程圖常用的工具 程序員效率:整理常用的在線筆記軟件 遠程辦公:常用的遠程協助軟件,你都知道嗎? 51單片機程序下載、ISP及串口基礎知識 硬件:斷路器、接觸器、繼電器基礎知識





本文分享自微信公衆號 - IT技術分享社區(gh_a27c0758eb03)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章