IntelliJ-Ideaの高速化


92

私はScala開発にintelliJを使用していて、先週8 GBの新しいRAM を取得したので、使用する時間だと思った。私は、タスクマネージャを確認し、使用してのIntelliJを見つけ〜250メガバイトを。日食から、JVMオプションを調整することで速度が大幅に向上することを知っていたので、Googleで...

見つかったOS Xのために、この1 私は微調整を開始して、私は、すぐにJVMオプションを見つけることができませんでしたXmxのを。1 GBで、もう起動しないことに気付きました。私はintelliJのJavaバージョンをチェックしましたが、それが古く、32ビットであることがわかりました。

したがって、現在のJDKと64ビットを使用するには、リンクを次のように変更する必要があります。

IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe

IntelliJ IDEA Community Edition 10.0.2\bin\idea.BAT

「開始」を調整します

バットはJDK_HOME現在64ビットを探して使用しています。

現在のVMオプションは次の場所にあります

...\IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe.vmoptions

-Xms512m
-Xmx1024m
-XX:MaxPermSize=512m
-ea
-server
-XX:+DoEscapeAnalysis
-XX:+UseCompressedOops
-XX:+UnlockExperimentalVMOptions
-XX:+UseParallelGC

の代わりに-XX:+UseParallelGC、を使用できます-XX:+UseConcMarkSweepGC

デスクトップアプリの受け入れられた選択ですが、最近スループットコレクターに変更しました。高速なマシンと十分に小さいヒープを使用すると、一時停止が速くなり、スループットが向上し、断片化の問題が発生しません(ijuma。#scala)。

変更:

-XX:+UseConcMarkSweepGC //removed
// removed, because not needed with the lastest JVM.
    -XX:+UnlockExperimentalVMOptions
    -XX:+DoEscapeAnalysis
    -XX:+UseCompressedOops

ここでは、これらのオプションを使用します。それについてのあなたの経験を本当に知りたいです。

どのオプションが最適ですか?を介してintelliJを実行している間、このcmdウィンドウを非表示にするにはどうすればよい.batですか?:)

ちなみに、これはintelliJ調整するための別のリンクです。基本的には、p.20 / 21に、システムのディレクトリに対するウィンドウの復元とアンチウイルスをオフにするように書かれています。

intelliJを高速化する別の方法は、ramdriveにintellijシステムフォルダーを配置することです(OlegYch | hに感謝)。

from idea.properties 
idea.system.path=${idea.home}/.IntelliJIdea/system

Win 7 64ビットRAMドライブまたはこれのスーパーユーザーを参照してください。私には1 GBで問題ないようです。

友人が私に与えた別のヒントは、アンチウイルスからプロジェクトディレクトリ除外することです(アクセス時にスキャン)

Eclipseのチューニングに関する同様の投稿があります。


6
64ビットバージョンが実行されている場合、VMオプションは次の場所から読み取られますidea64.exe.vmoptions
Arnaud P

同様の質問を追加しましたが、32ビットOS(Windows 7)と3 GB RAMの場合:IntelliJ IDEA
13.1-3GB

.batファイルではなく「idea64.exe」を直接実行しないのはなぜですか?(少なくともIntelliJ idea 11にはidea64.exeがありますか?
jbarrameda 2015年

回答:


32

この組み合わせは、マーベリックスで実行されている私のIntellij13でうまく機能します。

2017年7月18日更新

# custom IntelliJ IDEA VM options

-ea
-server
-Xms2G
-Xmx4096M
-Xss2m
-XX:MaxMetaspaceSize=2G
-XX:ReservedCodeCacheSize=1G
-XX:MetaspaceSize=512m
-XX:+UseConcMarkSweepGC
-XX:+DoEscapeAnalysis
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:+UnlockExperimentalVMOptions
-Djava.net.preferIPv4Stack=true
-Dsun.io.useCanonCaches=false
-XX:LargePageSizeInBytes=256m
-XX:+UseCodeCacheFlushing
-XX:ParallelGCThreads=8
-XX:+DisableExplicitGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+PrintGCDetails
-XX:+PrintFlagsFinal
-XX:+AggressiveOpts
-XX:+CMSClassUnloadingEnabled
-XX:CMSInitiatingOccupancyFraction=60
-XX:+CMSClassUnloadingEnabled
-XX:+CMSParallelRemarkEnabled
-XX:+UseAdaptiveGCBoundary
-XX:+UseSplitVerifier
-XX:CompileThreshold=10000
-XX:+OptimizeStringConcat
-XX:+UseStringCache
-XX:+UseFastAccessorMethods
-XX:+UnlockDiagnosticVMOptions
-XX:+HeapDumpOnOutOfMemoryError
-XX:+UseCompressedOops
-XX:-OmitStackTraceInFastThrow
-Dawt.useSystemAAFontSettings=lcd

-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine

この設定はhttps://github.com/adben/config/blob/master/idea64.vmoptionsで更新されています


3
あなたはそこにたくさんの重複があります
vach

3
これに注意し-XX:+UseCompressedStringsてください。リストのすべてのうち、これは私にとってそれを壊しました、残りはうまくいきました。
blamb

2
@adbenのおかげで、PCのIJが大幅に改善されました。しかし、私は削除する必要がありましたMaxMetaspaceSizeMetaspaceSizeUseCompressedStrings彼らはLinuxのx86_64版にIJ 14でサポートされていないため。UseCompressedOops私もうまくいきませんでした。ヒント:コマンドラインからIJを実行してエラーメッセージを表示しますidea.sh
。Linux

1
-XX:+ UseCompressedStringsは、Win8 x64およびIDEA 64ビットバージョンで私にとっても壊れました。それ以外はすべて問題ないようです。
マイナーゴッド

このファイルを最初に編集するには、Ctrl + Shift + Aを押してFind Actionポップアップを表示し、「Edit Custom VM Options」と入力します。それはあなたが編集できるあなたのマシンのための正しいファイルを自動的に作成します。
ケビンクーパー

28

SSDドライブに切り替えると、パフォーマンスが大幅に向上しました(特に大規模なプロジェクトの場合)。


SSDとHDDでIJパフォーマンスのベンチマークを行うつもりです!
Gaurav 2018

22

少し前に、プロジェクトのコンパイルを高速化する方法を探していました。それが結果です。これはIntelliJ IDEA自体のためではありませんが、大きなプロジェクトを(再)ビルドするときに非常に役立ちます。他のIDEでも動作すると思います。また、Linuxのアプローチについて説明しましたが、Windowsには独自のRAMディスク実装があるはずです。

コンパイルを高速化する最も簡単な方法は、コンパイル出力をRAMディスクに移動することです。

RAMディスクのセットアップ

fstabを開く

$ sudo gedit /etc/fstab

geditあなたが使うのではなく、vi好きなものを使うことができます)

RAMディスクのマウントポイントを設定する

私のシステムのいくつかの場所でRAMディスクを使用していますが/tmp、そのうちの1つはなので、コンパイル出力をそこに配置します。

tmpfs /var/tmp tmpfs defaults 0 0

この場合、ファイルシステムのサイズに制限はありませんが、問題ありません/tmp。現在のサイズは73MBです。しかし、RAMディスクのサイズが大きくなりすぎることを恐れている場合は、そのサイズを制限できます。例:

tmpfs /var/tmp tmpfs defaults,size=512M 0 0

プロジェクトのセットアップ

IntelliJ IDEAでプロジェクト構造を開き(Ctrl+Alt+Shift+Sデフォルト)、[プロジェクト]-[プロジェクトコンパイラの出力]に移動して、RAMディスクマウントポイントに移動します。

/tmp/projectName/out

projectNameそこに移動する必要がある場合、または同時に複数のプロジェクトで作業する場合に簡単に見つけるためにフォルダーを追加しました)

次に、[モジュール]に移動し、すべてのモジュールで[パス]に移動して[プロジェクトコンパイルの出力パスを継承]を選択するか、カスタムコンパイルの出力パスを使用する場合は、[出力パス]と[テスト出力パス]を変更します。以前にコンパイラの出力を投影します。

それだけです、皆さん!

PSいくつかの数字:現在のプロジェクトコンパイルのさまざまなケースでの時間(およそ):

HDD:     80s
SSD:     30s
SSD+RAM: 20s

PPS SSDディスクを使用している場合、コンパイル速度が向上するだけでなく、ディスクでの書き込み操作が減るので、SSDが永遠に幸せに暮らせるようになります;)


ラムソリューションは素晴らしいです!パフォーマンスだけでなく、SSDの寿命を保護します。
Mojtaba Asg

私は私の移動cachesindex、RAMディスクにシンボリックリンクを経由して、フォルダをRAMドライブであるIntelliJ IDEAのキャッシュはシンボリックリンクせずにそれを行うための別の方法を提案し、あなただけのキャッシュとインデックスフォルダーことを指定することはできませんので、しかし、それは大きなRAMディスクを必要とします仕方。言うまでもありませんが、シンボルの検索/検索/クリックは瞬時またはほぼ瞬時に行われます
ycomp

Windows 10でこれを行う方法?
Gaurav

@ycompでは、その方法について詳しく説明していただけますか?
SergioLeone

具体的には思い出せませんが、多分それ以上に面倒です。とんでもない速さでしたが。それを実行することに関連する特定の問題があったかどうか思い出せません。別のPCに移行したら、実行を停止しました
ycomp

20

について:

.batを使用してintelliJを実行している間、このコマンドウィンドウを非表示にするにはどうすればよいですか?

'start'コマンドとjavaw.exeを一緒に使用します。

SET JAVA_EXE=%IDEA_JDK%\jre\bin\java.exe
...
"%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %IDEA_MAIN_CLASS_NAME% %*

それを次のように変更します。

SET JAVA_EXE=%IDEA_JDK%\jre\bin\javaw.exe
...
start "Intellij IDEA" /b "%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %IDEA_MAIN_CLASS_NAME% %*

19

IntelliJでできる最も便利なことは、ディスクキャッシュ用に多くの空きメモリを用意することです。です。IntelliJは、その処理作業の多くをキャッシュファイルに保存します。これは、十分な空きメモリがある場合に適切に機能しますが、ディスクキャッシュが制限されている場合は、定期的で長時間続く一時停止が発生します。

-XX:+UseConcMarkSweepGCいうよりはお勧めしG1ます。

また、ファイルのローカルコピーを処理して、ファイルアクセスの遅延を最小限に抑えています。

ところで:私が取り組んでいるプロジェクトでは、最大ヒープが2 GBに設定されているにもかかわらず、24 GBのマシンと48 GBのマシンでの作業の違いに気付きました;)


4
私にとって、最も重要な認識は、一時停止したとき、それはGCが原因ではなく、ディスクからデータを再度読み取る必要があるということです。
Peter Lawrey、2011

3
48GBマシンと24GBマシンの違いは、おそらく追加のRAMを使用したファイルシステム/ OSレベルのキャッシュが原因です。
cdeszaq 2013年

4

いくつか実験を行ったところ、GCの一時停止を減らすには、次の組み合わせが最も効果的であることがわかりました-XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50

また、ヒープを大きくしすぎないようにします。512以下でもかまいません。それ以外の場合は、GCがいっぱいになると、すべてを実行する必要があり、時間がかかります。



2

それはまだ言及されていない理由はわからない-あなたは、有効にすることができPower Save mode、多くのオフそのターン、IJ用を含め、背景活動Files Synchronization。一部の記事では、プロジェクト構造オプション(@ OJ278による回答の記事など)でファイル同期を無効にできると述べていますが、IJ 14でこのオプションを見つけることができませんでしたPower Save mode、無効になっているようです。

私は非常に大きなコードベース(AOSPソースコード)を持っているので、バックグラウンドファイルの同期によるHDアクティビティは迷惑です...


1

intellijのオプティマイザプラグインを使用できます。

https://zeroturnaround.com/free/optimizer-for-intellij-idea/

プラグインでできること:

  • 仮想マシンオプションの自動調整
  • クラス検証を無効にする
  • システムキャッシュをクリーンアップする
  • 外部ビルドツールを構成する
  • 最新のOracle JDKを検証する
  • ビルドをスキップして再デプロイ

なぜ反対票?問題はIntellijのチューニングに関するもので、これが解決策です
iberck

2
残念ながら、プラグインはプルされているようです。
nilo de roock 2017

1

が提供する答えはadben、私のマシンのパフォーマンスを向上させるのに非常に役立ちます。Dzoneの記事を読んだ後、少し変更しましたが、

-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

彼らは上記の設定を使用することで大規模プロジェクトのパフォーマンスを改善し、私たちのプロジェクトでも完璧に動作します。最後に、使用しないすべてのプラグインを無効にしました。これにより、状況も改善されます。

リファレンス:https : //dzone.com/articles/the-one-and-only-reason-to-customize-intellij-idea


0

私はこの組み合わせを使用しましたが、私の環境では問題なく機能しています

-server
-Xms2048m
-Xmx2048m
-XX:NewSize=512m
-XX:MaxNewSize=512m
-XX:PermSize=512m
-XX:MaxPermSize=512m
-XX:+UseParNewGC
-XX:ParallelGCThreads=4
-XX:MaxTenuringThreshold=1
-XX:SurvivorRatio=8
-XX:+UseCodeCacheFlushing
-XX:+UseConcMarkSweepGC
-XX:+AggressiveOpts
-XX:+CMSClassUnloadingEnabled
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:+CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=65
-XX:+CMSScavengeBeforeRemark
-XX:+UseCMSInitiatingOccupancyOnly
-XX:ReservedCodeCacheSize=64m
-XX:-TraceClassUnloading
-ea
-Dsun.io.useCanonCaches=false

-XX:+UseParNewGC最近のCLionバージョンには含めないでください。オプションが無効です。
Sandu Liviu Catalin

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.