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

IntelliJ IDEA 性能優(yōu)化的教程詳解

 更新時間:2020年05月12日 15:13:17   作者:朱小廝  
這篇文章主要介紹了IntelliJ IDEA 性能優(yōu)化的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

idea打開的多了 內(nèi)存占用也就多了 下邊是親試的優(yōu)化ide性能的方法

1.設(shè)置JVM的啟動參數(shù):

  進入idea的安裝目錄的bin文件夾

  打開 idea.exe.vmoptions 文件, 修改-Xmx 的 值為2048m

  打開 idea64.exe.vmoptions 文件, 修改-Xmx 的 值為2048m

  

  打開idea.properties文件,找到idea.max.intellisense.filesize,默認是2500,改為25000(數(shù)值僅供參考,具體數(shù)值根據(jù)自己文件大小來定)

  參數(shù)作用:

    -Xms1024m 設(shè)置初時的內(nèi)存大小,提高Java程序的啟動速度
    -Xmx2048m 設(shè)置最大內(nèi)存數(shù),提高該值,可以減少內(nèi)存Garage收集的頻率,提高程序性能
    -XX:ReservedCodeCacheSize=480m設(shè)置代碼內(nèi)存容量
    -XX:+UseParNewGC 使用并行收集算法
    -server 控制內(nèi)存garage方式,這樣你無需在花一到兩分鐘等待內(nèi)存garage的收集

2.菜單配置設(shè)置JVM的啟動參數(shù):通過Help - Edit Custom VM Options...菜單設(shè)置配置,IntelliJ會優(yōu)先使用這個地方的配置文件

3.關(guān)閉代碼檢查:  

IntelliJ的代碼檢測功能非常強大,但也占用了一些資源,可以將默認的除 Error之外的其他級別的檢測都去掉  

4.清空緩存并重建索引:

  將編譯進程和Maven的堆值設(shè)置大一些

  

ps:下面看下IntelliJ IDEA 更新后,電腦卡成球,該如何優(yōu)化?

來源 | https://urlify.cn/NBBbam

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

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

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

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

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

目標

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

測試機器和項目

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

項目

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

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

測試場景

  1. 在 Idea 中關(guān)閉所有項目
  2. 基于測試文件 idea.vmoptions 進行設(shè)置
  3. 重啟電腦
  4. 啟動后關(guān)閉所有不相關(guān)的項目( communicators 等等)
  5. 打開 Idea(測試時間)
  6. 打開大項目(測試時間)
  7. 檢查 jstat -gcutil
  8. 打開兩個微服務(wù)項目(測試時間)
  9. 檢查 jstat -gcutil
  10. 返回大項目然后點擊“刷新 Gradle 項目”按鈕(測試時間)
  11. 檢查 jstat -gcutil

jstat -gcutil

jstat 是 JDK 自帶的工具,主要利用 JVM 內(nèi)建的指令對 Java 應(yīng)用程序的資源和性能進行實時的命令行監(jiān)控,還包括對 Heap size 和垃圾回收狀況的監(jiān)控。它有許多選項來收集各種數(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è)置,為了好記,給它們起了不同的名字。

默認(灰色標識)

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

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

Big(大)(紅色標識)

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

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

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

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

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

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

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

-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)進行設(shè)置)

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

結(jié)果Idea啟動時間

正如上圖所示,啟動時間并不依賴于內(nèi)存設(shè)置。Idea 在所有場景下的測試時間都是10秒,無論內(nèi)存分配有多少。這并不足為奇,因為在此早期階段,這些設(shè)置并不會影響到應(yīng)用的行為。

加載大項目花費的時間

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

jstat -gcutil <IDEA_PID>

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

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

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

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

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

再次使用jstat –gcutil

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

最后的角逐:重新加載Monolith

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

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

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

最后一次使用jstat-gcutil

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

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

總結(jié)

在這次簡短的實驗中,大家可以發(fā)現(xiàn),即使對 IntelliJ IDEA 內(nèi)存進行微調(diào),都可以大大提升 IDE 性能。當然,內(nèi)存分配越多,執(zhí)行效果就越好。但是,你也會發(fā)現(xiàn), IDE 之外許多其他應(yīng)用程序也需要消耗內(nèi)存,所以,大家的目標應(yīng)該是在提高性能和內(nèi)存消耗之間找到一個平衡。筆者認為,在大多數(shù)情況下,把 Xmx 值設(shè)置在 2G 和 3G 之間是最佳的。如果你有更多的時間可以用 jstat 和 jvisualm 檢查用不同的 JVM 設(shè)置如何影響性能和內(nèi)存占用。

到此這篇關(guān)于IntelliJ IDEA 更新后電腦卡成球該如何優(yōu)化的文章就介紹到這了,更多相關(guān)IntelliJ IDEA更新電腦卡內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 進制轉(zhuǎn)換基礎(chǔ)

    進制轉(zhuǎn)換基礎(chǔ)

    很多年前大學(xué)里學(xué)過的進制轉(zhuǎn)換還是挺簡單的,沒想到多年不用了,都忘了,剛好看到這篇文章,特分享下,方便需要的朋友
    2013-02-02
  • git push 本地項目推送到遠程分支的方法(git命令版)

    git push 本地項目推送到遠程分支的方法(git命令版)

    這篇文章主要介紹了git push 本地項目推送到遠程分支的方法(git命令版),需要的朋友可以參考下
    2020-09-09
  • String與string的區(qū)別(注意大小寫)

    String與string的區(qū)別(注意大小寫)

    String與string的區(qū)別(注意大小寫)
    2010-06-06
  • git分支或指定文件回退到指定版本命令詳解

    git分支或指定文件回退到指定版本命令詳解

    作為一名后端開發(fā),相信大家一定遇到過這樣的情景,代碼開發(fā)人員過多,并且開發(fā)分支過多,導(dǎo)致代碼版本管理困難,這樣就難免遇到一些代碼合并出錯,下面這篇文章主要給大家介紹了關(guān)于git分支或指定文件回退到指定版本命令的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • SonarQube實現(xiàn)自動化代碼掃描的安裝及使用集成方式

    SonarQube實現(xiàn)自動化代碼掃描的安裝及使用集成方式

    Sonar是一個用于代碼質(zhì)量管理的開源平臺,通過插件機制,Sonar可與第三方工具進行集成。將Sonar引入到代碼開發(fā)的過程中,提供靜態(tài)源代碼安全掃描能力,這無疑是安全左移的一次很好的嘗試和探索
    2021-10-10
  • 鍵盤掃描碼[比較完整]

    鍵盤掃描碼[比較完整]

    鍵盤掃描碼
    2009-05-05
  • 詳解HTTP協(xié)議簡介

    詳解HTTP協(xié)議簡介

    HTTP是訪問互聯(lián)網(wǎng)使用的核心通信協(xié)議,也是所有web應(yīng)用程序使用的通信協(xié)議。下面通過本文給大家介紹HTTP協(xié)議簡介的相關(guān)知識,感興趣的朋友一起學(xué)習(xí)吧
    2018-01-01
  • linux?部署apache服務(wù)的步驟

    linux?部署apache服務(wù)的步驟

    這篇文章主要介紹了linux部署apache服務(wù)的步驟,部署apache服務(wù)的步驟本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • 老生常談計算機中的編碼問題(必看篇)

    老生常談計算機中的編碼問題(必看篇)

    下面小編就為大家?guī)硪黄仙U動嬎銠C中的編碼問題(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 使用git代替FTP部署代碼到服務(wù)器的例子

    使用git代替FTP部署代碼到服務(wù)器的例子

    這篇文章主要介紹了使用git代替FTP部署代碼到服務(wù)器的例子,這種方法可以節(jié)省流量、節(jié)省時間,需要的朋友可以參考下
    2014-09-09

最新評論