Beschleunigen Sie die IntelliJ-Idee

92

Ich verwende IntelliJ für die Scala-Entwicklung und habe letzte Woche 8 GB neuen RAM erhalten, also dachte ich: Zeit, ihn zu verwenden. Ich habe meinen Task-Manager überprüft und IntelliJ mit ~ 250 MB gefunden . Durch Eclipse wusste ich, dass das Optimieren von JVM-Optionen viel zur Verbesserung der Geschwindigkeit beitrug, also googelte ich ...

und fand dieses für OS X Ich konnte die JVM-Option nicht sofort finden, also fing ich an, Xmx zu optimieren. Bei 1 GB wurde mir klar, dass es nicht mehr startet. Ich habe die IntelliJ Java-Version überprüft und festgestellt, dass sie veraltet und 32-Bit ist.

Um Ihr aktuelles JDK und 64-Bit zu verwenden , müssen Sie Ihren Link ändern von:

IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe

zu

IntelliJ IDEA Community Edition 10.0.2\bin\idea.BAT

und stellen Sie "Start in" ein

Die Fledermaus sucht JDK_HOMEund verwendet jetzt 64bit.

Meine aktuellen VM-Optionen , die sich in befinden

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

sind

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

Stattdessen -XX:+UseParallelGCkönnen Sie verwenden -XX:+UseConcMarkSweepGC, was ist

Die akzeptierte Wahl für Desktop-Apps, aber ich habe kürzlich zum Durchsatzkollektor gewechselt. Denn mit einer schnellen Maschine und einem ausreichend kleinen Haufen haben Sie schnelle Pausen, mehr Durchsatz und keine Probleme mit der Fragmentierung (ijuma. #scala)

Änderungen:

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

Ich werde mich vorerst an diese Optionen halten. Ich würde gerne Ihre Erfahrungen damit wissen.

Welche Optionen eignen sich am besten für Sie? Wie verstecke ich dieses Cmd-Fenster, während ich IntelliJ durch das Fenster starte .bat? :) :)

Übrigens, hier ist ein weiterer Link zum Einstellen von IntelliJ . Grundsätzlich heißt es auf S.20 / 21 , Windows-Wiederherstellung und Antivirus für Systemverzeichnisse zu deaktivieren.

Eine andere Möglichkeit, IntelliJ zu beschleunigen, besteht darin, den Intellij-Systemordner auf dem RAM- Laufwerk abzulegen (danke an OlegYch | h).

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

Siehe Superuser für Win 7 64-Bit-RAM-Laufwerk oder dieses . 1 GB scheint mir in Ordnung zu sein.

Ein weiterer Hinweis, den mir ein Freund gegeben hat, ist , die Projektverzeichnisse von Ihrem Antivirenprogramm auszuschließen (Scan bei Zugriff).

Es gibt ähnliche Beiträge zum Optimieren von Eclipse:

Stefan K.
quelle
6
Wenn die 64 - Bit - Version ausgeführt wird, werden die VM - Optionen aus gelesen werdenidea64.exe.vmoptions
Arnaud P
Ich habe eine ähnliche Frage hinzugefügt, aber für ein 32-Bit-Betriebssystem (Windows 7) und 3 GB RAM: IntelliJ IDEA 13.1 - wie man Probleme mit wenig Speicher auf einem 32-Bit-Betriebssystem (Win 7) mit
krm
Warum nicht "idea64.exe" direkt anstatt über die .bat-Datei ausführen? (Zumindest gibt es idea64.exe in IntelliJ idea 11?
jbarrameda

Antworten:

32

Diese Kombination funktioniert hervorragend auf meinem Intellij13, der in Mavericks ausgeführt wird:

Aktualisiert am 18. Juli 2017 :

# 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

Ich halte diese Einstellung unter https://github.com/adben/config/blob/master/idea64.vmoptions auf dem neuesten Stand

adben
quelle
3
Sie haben eine Menge Duplikate drin
vach
3
Sei vorsichtig mit diesem -XX:+UseCompressedStrings, von allem auf deiner Liste, das hat es für mich kaputt gemacht, der Rest hat funktioniert.
Blamb
2
Danke @adben, es ist IJ auf meinem PC stark verbessert. Aber ich hatte zu entfernen MaxMetaspaceSize, MetaspaceSize, UseCompressedStringsweil sie in IJ nicht unterstützten 14 auf Linux x86_64. UseCompressedOopsfunktioniert auch nicht für mich. Tipp: Führen Sie IJ über die Befehlszeile aus, um Fehlermeldungen idea.sh
anzuzeigen. Unter
1
-XX: + UseCompressedStrings hat es auch für mich unter Win8 x64 und IDEA 64-Bit-Version kaputt gemacht. Alles andere scheint in Ordnung zu sein.
Minorgod
Um diese Datei zunächst zu bearbeiten, drücken Sie einfach Strg + Umschalt + A für das Popup "Aktion suchen" und geben Sie " Benutzerdefinierte VM-Optionen bearbeiten " ein. Es wird automatisch die richtige Datei für Ihren Computer erstellt, die Sie bearbeiten können.
Kevin Cooper
28

Für mich hat die Umstellung auf ein SSD-Laufwerk die Leistung erheblich verbessert (insbesondere bei großen Projekten).

Yann Cébron
quelle
Ich werde definitiv die IJ-Leistung mit SSD und HDD vergleichen!
Gaurav
22

Vor einiger Zeit habe ich nach Möglichkeiten gesucht, die Kompilierung meines Projekts zu beschleunigen, und das ist das Ergebnis. Dies ist nicht für IntelliJ IDEA selbst gedacht, wird aber beim (Neu-) Aufbau großer Projekte sehr hilfreich sein und ich denke, es wird auch mit allen anderen IDEs funktionieren. Ich habe auch den Linux-Ansatz beschrieben, aber ich bin sicher, dass Windows über eigene RAM-Disk-Implementierungen verfügt.

Der einfachste Weg, die Kompilierung zu beschleunigen, besteht darin, die Kompilierungsausgabe auf die RAM-Disk zu verschieben.

RAM-Disk-Setup

Öffnen Sie fstab

$ sudo gedit /etc/fstab

(anstatt geditdu kannst verwenden vioder was auch immer du magst)

Richten Sie den RAM-Disk-Mount-Punkt ein

Ich verwende RAM-Festplatten an mehreren Stellen in meinem System, und eine davon ist /tmp, also werde ich einfach meine Kompilierungsausgabe dort ablegen:

tmpfs /var/tmp tmpfs defaults 0 0

In diesem Fall ist Ihre Dateisystemgröße nicht begrenzt, aber es /tmpist in Ordnung , meine Größe beträgt derzeit 73 MB. Wenn Sie jedoch befürchten, dass die Größe der RAM-Festplatte zu groß wird, können Sie die Größe einschränken, z.

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

Projektaufbau

Öffnen Sie in IntelliJ IDEA die Projektstruktur ( Ctrl+Alt+Shift+Sstandardmäßig), gehen Sie zu Projekt - 'Projekt-Compiler-Ausgabe' und verschieben Sie sie in den RAM-Disk-Mount-Punkt:

/tmp/projectName/out

(Ich habe einen projectNameOrdner hinzugefügt , um ihn leicht zu finden, wenn ich dorthin muss oder mit mehreren Projekten gleichzeitig arbeiten möchte.)

Gehen Sie dann zu Module, und wählen Sie in all Ihren Modulen Pfade aus und wählen Sie 'Projektkompilierungsausgabepfad erben'. Wenn Sie einen benutzerdefinierten Kompilierungsausgabepfad verwenden möchten, ändern Sie 'Ausgabepfad' und 'Ausgabepfad testen' wie zuvor es, um Compiler-Ausgabe vor zu projizieren.

Das war's Leute!

PS Ein paar Zahlen: Zeitpunkt meiner aktuellen Projektzusammenstellung in verschiedenen Fällen (ungefähr):

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

PPS Wenn Sie eine SSD-Festplatte verwenden, reduzieren Sie neben der Beschleunigung der Kompilierung auch die Schreibvorgänge auf Ihrer Festplatte, sodass Ihre SSD auch danach glücklich leben kann;)

Onkel Lem
quelle
Ram Lösung ist großartig !! Nicht nur für die Leistung, sondern auch für die Lebensdauer der SSD. Danke!
Mojtaba Asg
Ich habe meine cachesund indexOrdner über eine symbolische Verknüpfung auf eine RAM-Disk verschoben. Der Intellij IDEA-Cache im RAM-Laufwerk schlägt eine andere Möglichkeit vor, dies ohne symbolische Verknüpfungen zu tun. Es wäre jedoch eine größere RAM-Disk erforderlich, da Sie nicht nur die Caches und Indexordner angeben können, die dies tun Weg. Unnötig zu erwähnen, dass jede Suche / Suche / jedes Klicken auf ein Symbol sofort oder fast sofort erfolgt
ycomp
Wie mache ich das unter Windows 10?
Gaurav
@ycomp Könnten Sie bitte näher erläutern, wie das geht?
SergioLeone
Ich kann mich nicht genau erinnern, aber es ist wahrscheinlich mehr Ärger als es wert ist. Obwohl es schnell böse war. Ich kann mich nicht erinnern, ob damit bestimmte Probleme verbunden waren. Ich habe damit aufgehört, als ich auf einen anderen PC migriert bin
ycomp
20

Hinsichtlich:

Wie verstecke ich dieses Cmd-Fenster, während ich IntelliJ durch die .bat laufen lasse?

Verwenden Sie den Befehl 'start' und javaw.exe zusammen. Wenn Sie also Folgendes haben:

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

ändere es in:

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

Das Nützlichste, was Sie für IntelliJ tun können, ist, viel freien Speicher für das Zwischenspeichern von Datenträgern zu haben . IntelliJ speichert einen Großteil seiner Verarbeitungsarbeit in zwischengespeicherten Dateien. Dies funktioniert gut, wenn Sie über genügend freien Speicher verfügen. Wenn Ihr Festplatten-Cache jedoch begrenzt ist, werden regelmäßige, lang anhaltende Pausen angezeigt.

Ich würde -XX:+UseConcMarkSweepGCeher vorschlagen als G1.

Ich arbeite auch mit lokalen Kopien von Dateien, um die Verzögerung des Dateizugriffs zu minimieren.

Übrigens : Bei dem Projekt, an dem ich arbeite, habe ich den Unterschied zwischen der Arbeit an einem Computer mit 24 GB und einem mit 48 GB festgestellt, obwohl der maximale Heap auf 2 GB festgelegt ist;)

Peter Lawrey
quelle
4
Für mich ist die wichtigste Erkenntnis, dass es beim Anhalten nicht auf GC zurückzuführen ist, sondern dass Daten von der Festplatte erneut gelesen werden müssen.
Peter Lawrey
3
Der Unterschied zwischen einem 48-GB-Computer und einem 24-GB-Computer ist wahrscheinlich auf das Zwischenspeichern auf Dateisystem- / Betriebssystemebene mit dem zusätzlichen RAM zurückzuführen.
Cdeszaq
4

Ich habe einige Experimente durchgeführt und festgestellt, dass die folgende Kombination am besten funktioniert, um die GC-Pausen zu verringern : -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50.

Ich würde den Haufen auch nicht zu groß machen, 512 oder noch kleiner ist OK für mich. Andernfalls muss der GC, wenn er voll ist, alles laufen, was einige Zeit in Anspruch nimmt.

Peter Gromov
quelle
2

Nicht sicher, warum es noch nicht erwähnt wurde - Sie können aktivieren Power Save mode, was viele IJ ausschaltet Hintergrundaktivitäten deaktiviert werden, einschließlich Files Synchronization. Einige Artikel besagen, dass es möglich ist, die Dateisynchronisierung in Projektstrukturoptionen zu deaktivieren (wie der Artikel in der Antwort von @ OJ278), aber ich konnte diese Option in IJ 14 nicht finden , Power Save modescheint sie jedoch zu deaktivieren.

Ich habe eine ziemlich große Codebasis ( AOSP- Quellcode), daher ist die HD-Aktivität aufgrund der Synchronisierung von Hintergrunddateien ärgerlich ...

Mixaz
quelle
1

Sie können das Optimizer-Plugin des Intellij verwenden:

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

Mit dem Plugin können Sie:

  • Optionen für die automatische Optimierung der virtuellen Maschine
  • Deaktivieren Sie die Klassenüberprüfung
  • Bereinigen Sie die Systemcaches
  • Konfigurieren Sie externe Build-Tools
  • Überprüfen Sie das neueste Oracle JDK
  • Build überspringen und erneut bereitstellen
iberck
quelle
Warum abstimmen? Die Frage ist über die Abstimmung von Intellij und dies ist eine Lösung
Iberck
2
Leider scheint das Plugin gezogen zu sein.
Nilo de Roock
1

Die Antwort von adbenist sehr hilfreich, um die Leistung meines Computers zu verbessern. Obwohl ich es nach dem Lesen eines Dzone-Artikels leicht überschrieben habe,

-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

Sie haben die Leistung großer Projekte durch Verwendung der oben genannten Konfiguration verbessert und funktionieren auch für unsere Projekte einwandfrei. Zuletzt habe ich alle Plugins deaktiviert, die ich nicht verwenden werde, und das verbessert auch die Dinge.

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

Chaklader Asfak Arefe
quelle
0

Ich habe diese Kombination verwendet und sie funktioniert in meiner Umgebung einwandfrei

-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
Yasir Shabbir Choudhary
quelle
Nicht -XX:+UseParNewGCin aktuellen CLion-Versionen enthalten. Ungültige Option.
Sandu Liviu Catalin