Was sind die besten JVM-Einstellungen für Eclipse? [geschlossen]

315

Was sind die besten JVM-Einstellungen, die Sie zum Ausführen von Eclipse gefunden haben?

Craig Angus
quelle
8
Die neuen und verbesserten eclipse.iniEinstellungen für Helios 3.6 sind hier (unten in einer neuen Antwort): stackoverflow.com/questions/142357/…
VonC
6
Es ist erstaunlich, dass die als nicht konstruktiv geschlossene Frage eine so hohe Bewertung hat ...
Bancer
1
Diese Frage wurde gestellt, als die letzte Antwort auf eine solche Frage im Jahr 2008 eclipsezone.com/eclipse/forums/t20732.html war . Der Antwortsatz ist gewachsen, da neue Versionen von Eclipse und Java veröffentlicht wurden. Nachfolgende Updates haben die Antworten auf dem neuesten Stand gehalten. Das Schließen der Frage führt dazu, dass die Antworten veraltet sind. Die einzige Möglichkeit, diese Frage neu zu formulieren, besteht darin, sie versionsspezifisch zu gestalten. Dies ist meiner Meinung nach schlimmer, da mehrere Fragen im Grunde das gleiche Problem beantworten würden
Craig Angus,
10
Stimmen Sie zu - Fragen wie diese zu schließen ist Wahnsinn - Wahnsinn, sage ich Ihnen - Fragen wie diese sind die nützlichsten und interessantesten auf der Website!
Luigi Plinge
3
Laut Grund für die Schließung "erwarten wir, dass Antworten im Allgemeinen Fakten, Referenzen oder spezifisches Fachwissen beinhalten". Ich denke, dass das Schließen dieser Frage eine Strecke ist. Seien wir vorsichtig mit den Zensurbefugnissen. Ich würde sagen, dass es im Zweifelsfall besser ist, "das Wissen frei zu lassen" und offen zu lassen.
Luiscolorado

Antworten:

315

Es ist wieder soweit: "eclipse.ini take 3" Die Einstellungen schlagen zurück!

Einstellungen für Eclipse Helios 3.6 und 3.6.x.

Alternativtext http://www.eclipse.org/home/promotions/friends-helios/helios.png

Nach den Einstellungen für Eclipse Ganymede 3.4.x und Eclipse Galileo 3.5.x finden Sie hier einen detaillierten Überblick über eine "optimierte" eclipse.ini- Einstellungsdatei für Eclipse Helios 3.6.x:

(Mit "optimiert" meine ich die Möglichkeit, eine vollwertige Eclipse auf unserer beschissenen Workstation bei der Arbeit auszuführen, ein altes P4 aus dem Jahr 2002 mit 2Go RAM und XPSp3. Aber ich habe dieselben Einstellungen auch unter Windows7 getestet. )

Eclipse.ini

Alt-Text

WARNUNG : Verwenden Sie für Nicht-Windows-Plattformen die proprietäre Option Sun -XX:MaxPermSizeanstelle der proprietären Option Eclipse --launcher.XXMaxPermSize.
Das heißt: Es sei denn, Sie verwenden das neueste jdk6u21 Build 7 . Siehe den Oracle-Abschnitt unten.

-data
../../workspace
-showlocation
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
-vm
C:/Prog/Java/jdk1.6.0_21/jre/bin/server/jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Declipse.p2.unsignedPolicy=allow
-Xms128m
-Xmx384m
-Xss4m
-XX:PermSize=128m
-XX:MaxPermSize=384m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+CMSIncrementalPacing
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
-Dcom.sun.management.jmxremote
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=C:/Prog/Java/eclipse_addons

Hinweis:
Passen Sie das p2.reconciler.dropins.directoryan ein externes Verzeichnis Ihrer Wahl an.
Siehe diese SO-Antwort . Die Idee ist, neue Plugins unabhängig von einer Eclipse-Installation in einem Verzeichnis ablegen zu können.

In den folgenden Abschnitten wird detailliert beschrieben, was in dieser eclipse.iniDatei enthalten ist.


Das gefürchtete Oracle JVM 1.6u21 (Pre Build 7) und Eclipse stürzen ab

Andrew Niefer hat mich auf diese Situation aufmerksam gemacht und einen Blog-Beitrag über ein nicht standardmäßiges VM-Argument ( -XX:MaxPermSize) geschrieben, das dazu führen kann, dass VMs von anderen Anbietern überhaupt nicht gestartet werden.
Die Eclipse-Version dieser Option ( --launcher.XXMaxPermSize) funktioniert jedoch nicht mit dem neuen JDK (6u21, es sei denn, Sie verwenden 6u21 Build 7, siehe unten).

Das FinaleDie Lösung befindet sich im Eclipse-Wiki und nur für Helios unter Windows mit 6u21 vor Build 7 :

(eclipse_home) /plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503

Das ist es. Hier gibt es keine Einstellungen zum Optimieren (auch hier nur für Helios unter Windows mit einem 6u21 Pre Build 7 ).
Für Nicht-Windows-Plattformen müssen Sie zur proprietären Sun-Option zurückkehren -XX:MaxPermSize.

Das Problem basiert auf einer Regression: Die JVM-Identifizierung schlägt aufgrund der Umbenennung von Oracle in java.exe fehl und hat den Fehler 319514 in Eclipse ausgelöst .
Andrew hat sich um Bug 320005 gekümmert - [Launcher] --launcher.XXMaxPermSize: isSunVMsollte für Oracle true zurückgeben , dies gilt jedoch nur für Helios 3.6.1.
Francis Upton , ein weiterer Eclipse - Committer, reflektiert über die gesamte Situation .

Update u21b7, 27. Juli :
Oracle hat die Änderung für die nächste Java 6-Version rückgängig gemacht und wird sie erst mit JDK 7 erneut implementieren .
Wenn Sie jdk6u21 Build 7 verwenden , können Sie --launcher.XXMaxPermSizeanstelle von -XX:MaxPermSize(Nicht-Standard-Option) auf die Option (Eclipse) zurückgreifen .
Die automatische Erkennung im C-Launcher-Shimeclipse.exe sucht weiterhin nach der Sun MicrosystemsZeichenfolge " ", aber mit 6u21b7 funktioniert sie jetzt wieder.

Im Moment behalte ich die -XX:MaxPermSizeVersion bei (da ich keine Ahnung habe, wann jeder Eclipse das richtige JDK starten wird ).


Implizite `-startup` und` --launcher.library`

Im Gegensatz zu den vorherigen Einstellungen ist der genaue Pfad für diese Module nicht mehr festgelegt, was praktisch ist, da er zwischen verschiedenen Eclipse 3.6.x-Versionen variieren kann:

  • Start: Wenn nicht angegeben, sucht die ausführbare Datei im Plugins-Verzeichnis nach dem org.eclipse.equinox.launcherBundle mit der höchsten Version.
  • launcher.library: Wenn nicht angegeben, sucht die ausführbare Datei im pluginsVerzeichnis nach dem entsprechenden org.eclipse.equinox.launcher.[platform]Fragment mit der höchsten Version und verwendet die darin genannte gemeinsam genutzte Bibliothek eclipse_*.

Verwenden Sie JDK6

Das JDK6 ist jetzt explizit erforderlich, um Eclipse zu starten:

-Dosgi.requiredJavaVersion = 1.6

Diese SO-Frage zeigt eine positive Inzidenz für die Entwicklung unter Mac OS.


+ UnlockExperimentalVMOptions

Die folgenden Optionen sind Teil einiger experimenteller Optionen der Sun JVM.

-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods

In diesem Blogbeitrag wurde berichtet, dass sie Eclipse möglicherweise beschleunigen.
Alle JVM-Optionen finden Sie hier und auch auf der offiziellen Java Hotspot-Optionsseite .
Hinweis: Die detaillierte Liste der Optionsberichte , die UseFastAccessorMethodsmöglicherweise standardmäßig aktiv sind.

Siehe auch "Aktualisieren Sie Ihre JVM" :

Zur Erinnerung, G1 ist der neue Garbage Collector in Vorbereitung auf das JDK 7, der jedoch bereits in der Version 6 von u17 verwendet wird.


Öffnen von Dateien in Eclipse über die Befehlszeile

Lesen Sie den Blog-Beitrag von Andrew Niefer über diese neue Option:

--launcher.defaultAction
openFile

Dies teilt dem Launcher mit, dass, wenn es mit einer Befehlszeile aufgerufen wird, die nur Argumente enthält, die nicht mit " -" beginnen, diese Argumente so behandelt werden sollten, als ob sie " --launcher.openFile" folgen würden .

eclipse myFile.txt

Dies ist die Art von Befehlszeile, die der Launcher unter Windows erhält, wenn Sie auf eine mit Eclipse verknüpfte Datei doppelklicken oder Dateien auswählen und " Open With" oder " Send To" Eclipse auswählen .

Relative Pfade werden erstens für das aktuelle Arbeitsverzeichnis und zweitens für das Eclipse-Programmverzeichnis aufgelöst.

Siehe Fehler 301033 als Referenz. Ursprünglich Fehler 4922 (Oktober 2001, 9 Jahre später behoben).


p2 und die Eingabeaufforderung ohne Vorzeichen

Wenn Sie dieses Dialogfeld während der Installation Ihrer vielen Plugins satt haben:

Alt-Text

, füge hinzu eclipse.ini:

-Declipse.p2.unsignedPolicy=allow

Siehe diesen Blog-Beitrag von Chris Aniszczy und den Fehlerbericht 235526 .

Ich möchte sagen, dass die Sicherheitsforschung die Tatsache unterstützt, dass weniger Eingabeaufforderungen besser sind.
Die Leute ignorieren Dinge, die im Fluss von etwas auftauchen, das sie erledigen möchten.

Für 3.6 sollten wir keine Warnungen in der Mitte des Flusses anzeigen - egal wie stark wir vereinfachen, die Leute werden sie einfach ignorieren.
Stattdessen sollten wir alle die Probleme sammeln, haben nicht dieses Bündel mit Problemen installieren, und stattdessen bringen die Benutzer zurück zu einem Punkt im Workflow , wo sie fixup können - Add Vertrauen, configure Sicherheitspolitik lockerer usw. Das nennt man ‚sicher Inszenierung ' .

---------- http://www.eclipse.org/home/categories/images/wiki.gif Alternativtext http://www.eclipse.org/home/categories/images/wiki.gif Alternativtext http://www.eclipse.org/home/categories/images/wiki.gif

Zusätzliche Optionen

Diese Optionen sind nicht direkt eclipse.inioben aufgeführt, können jedoch bei Bedarf nützlich sein.


Das Problem "user.home" unter Windows7

Wenn Eclipse gestartet wird, liest es seine Keystore-Datei (in der Passwörter aufbewahrt werden), eine Datei, in der sich Eclipse befindet user.home.
Wenn user.homesich Eclipse aus irgendeinem Grund nicht ordnungsgemäß in einen vollständigen Pfad auflöst, wird Eclipse nicht gestartet.
Ursprünglich in dieser SO-Frage aufgeworfen , müssen Sie die Keystore-Datei in einem expliziten Pfad neu definieren (keine user.home mehr, die beim Start aufgelöst werden muss).

Fügen Sie hinzu eclipse.ini:

-eclipse.keyring 
C:\eclipse\keyring.txt

Dies wurde durch Fehler 300577 verfolgt , es wurde in dieser anderen SO-Frage gelöst .


Debug-Modus

Warten Sie, es gibt mehr als eine Einstellungsdatei in Eclipse.
Wenn Sie Ihrer eclipse.iniOption hinzufügen :

-debug

Wenn Sie den Debug-Modus aktivieren, sucht Eclipse nach einer anderen Einstellungsdatei: einer .optionsDatei, in der Sie einige OSGI-Optionen angeben können.
Und das ist großartig, wenn Sie neue Plugins über den Dropins-Ordner hinzufügen.
Fügen Sie in Ihrer .options-Datei die folgenden Einstellungen hinzu, wie in diesem Blog-Beitrag " Dropins-Diagnose " beschrieben :

org.eclipse.equinox.p2.core/debug=true
org.eclipse.equinox.p2.core/reconciler=true

P2 informiert Sie darüber, welche Bundles im dropins/Ordner gefunden wurden, welche Anforderung generiert wurde und wie der Installationsplan lautet. Vielleicht ist es keine detaillierte Erklärung dessen, was tatsächlich passiert ist und was schief gelaufen ist, aber es sollte Ihnen aussagekräftige Informationen darüber geben, wo Sie anfangen sollen:

  • War dein Bündel im Plan?
  • War es ein Installationsproblem (P2-Fehler)
  • oder ist es einfach nicht optimal, Ihre Funktion aufzunehmen?

Das kommt von Bug 264924 - [Reconciler] Keine Diagnose von Dropins-Problemen , was schließlich das folgende Problem löst:

Unzip eclipse-SDK-3.5M5-win32.zip to ..../eclipse
Unzip mdt-ocl-SDK-1.3.0M5.zip to ..../eclipse/dropins/mdt-ocl-SDK-1.3.0M5

Dies ist eine problematische Konfiguration, da OCL von der fehlenden EMF abhängt.
3.5M5 bietet keine Diagnose für dieses Problem.

Starten Sie Eclipse.
Keine offensichtlichen Probleme. Nichts im Fehlerprotokoll.

  • Help / About / PluginDetails zeigt org.eclipse.ocl.doc, aber nicht org.eclipse.ocl.
  • Help / About / ConfigurationDetails werden nicht (diagnostisch) erwähnt org.eclipse.ocl.
  • Help / Installation / Information Installed Softwarehat keine Erwähnung von org.eclipse.ocl.

Wo sind die schönen Fehlermarkierungen?


Manifest Klassenpfad

Siehe diesen Blog-Beitrag :

  • In Galileo (auch bekannt als Eclipse 3.5) begann JDT, den Manifest-Klassenpfad in Bibliotheken aufzulösen, die dem Erstellungspfad des Projekts hinzugefügt wurden. Dies funktionierte unabhängig davon, ob die Bibliothek direkt oder über einen Klassenpfadcontainer zum Erstellungspfad des Projekts hinzugefügt wurde, z. B. die von JDT bereitgestellte oder von einem Drittanbieter implementierte Benutzerbibliotheksfunktion.
  • In Helios wurde dieses Verhalten geändert, um Klassenpfadcontainer von der Auflösung des Manifestklassenpfads auszuschließen.

Das bedeutet, dass einige Ihrer Projekte möglicherweise nicht mehr in Helios kompiliert werden können.
Wenn Sie zum Galileo-Verhalten zurückkehren möchten, fügen Sie Folgendes hinzu:

-DresolveReferencedLibrariesForContainers=true

Siehe Fehler 305037 , Fehler 313965 und Fehler 313890 für Referenzen.


IPV4-Stapel

Diese SO-Frage erwähnt eine mögliche Lösung, wenn nicht auf Plugin-Update-Sites zugegriffen wird:

-Djava.net.preferIPv4Stack=true

Erwähnt hier nur für den Fall, dass es bei Ihrer Konfiguration helfen könnte.


JVM1.7x64 mögliche Optimierungen

Dieser Artikel berichtet:

Die schnellsten Optionen, die ich bisher für meinen Bench-Test mit der 1,7 x 64 JVM n Windows gefunden habe, sind:

-Xincgc 
-XX:-DontCompileHugeMethods 
-XX:MaxInlineSize=1024  
-XX:FreqInlineSize=1024 

Aber ich arbeite immer noch daran ...

VonC
quelle
Gemäß diesem Link, oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#icms , benötigen Sie -XX: + UseConcMarkSweepGC, um -XX: + CMSIncrementalMode verwenden zu können. Das fehlt in Ihrem obigen Beispiel. Wir würden CMSIncrementalMode nicht benötigen, wenn wir G1 GC verwenden, habe ich Recht?
RuntimeException
1
Hey, G1GC ist eine Katastrophe auf einem Mac. Es frisst die gesamte Maschine und erfordert einen Neustart.
Bmargulies
4
@VonC: -XX:CompileThreshold=5Verursacht für mich SCHRECKLICHE Verlangsamungen. Allein durch das Entfernen dieser Option wurde meine Eclipse-Startzeit von> 1 Minute auf 17 Sekunden verkürzt !! Ganz zu schweigen davon, wie schrecklich langsam die IDE im Allgemeinen war. Siehe diesen Link
TrinitronX
3
@TrinitronX: (und eigentlich jeder) -XX:CompileThreshold=5ist ein sehr niedriger Wert (Standard = 10000). Dieser Wert gibt die Anzahl der Methodenaufrufe / -zweige vor dem Kompilieren an. Ein zu niedriger Wert führt dazu, dass Ihr CodeCache vorzeitig voll wird und die Konsole möglicherweise Folgendes meldet: CodeCache is full. Compiler has been disabled Sobald der Compiler deaktiviert ist, werden Sie eine Langsamkeit in der App bemerken. Es gibt zwei Möglichkeiten, dies zu beheben: 1. Verwenden Sie -XX:CompileThreshold=1000(Feinabstimmung dieser Zahl) oder 2. Versuchen Sie, die Größe des Code-Cache zu erhöhen, indem Sie -XX:ReservedCodeCacheSize=64m(doppelt so
hoch wie
4
Für Linux verwenden Sie /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/i386/client/libjvm.so für jvm location
r15habh
76

Einstellungen für Eclipse Galileo 3.5 und 3.5.1

Derzeit (November 2009) teste ich mit jdk6 Update 17 die folgenden Konfigurationsoptionen (mit Galileo - Eclipse 3.5.x, siehe unten für 3.4 oder höher für Helios 3.6.x ):
( Passen Sie natürlich die relativen Pfade an in dieser eclipse.ini zu den richtigen Pfaden für Ihr Setup vorhanden)

Hinweis: Für eclipse3.5 ersetzen startupund launcher.libraryZeilen durch:

-startup
plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519

eclipse.ini 3.5.1

-data
../../workspace
-showlocation
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
384m
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-vm
../../../../program files/Java/jdk1.6.0_17/jre/bin/client/jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx384m
-Xss4m
-XX:PermSize=128m
-XX:MaxPermSize=384m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-Dcom.sun.management.jmxremote
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=C:/jv/eclipse/mydropins

Siehe auch meine ursprüngliche Antwort oben für weitere Informationen.

Änderungen (ab Juli 2009)

  • bezieht sich auf den Launcher und nicht auf das Framework
  • Shared Plugins: org.eclipse.equinox.p2.reconciler.dropins.directoryOption.
  • Galileo unterstützt vollständig relative Pfade für den Arbeitsbereich oder die VM (Sie müssen diese nicht von einer Eclipse-Installation in eine andere ändern, wenn Ihre JVM und Ihr Arbeitsbereich natürlich gleich bleiben).
    Zuvor wurden diese relativen Pfade beim Start von Eclipse immer wieder in absolute Pfade umgeschrieben ...
  • Sie können auch das JRE-Verzeichnis einer Java JDK-Installation in Ihr Eclipse-Verzeichnis kopieren

Vorsichtsmaßnahmen

Es gab einen Fehler mit ignorierten Haltepunkten, die tatsächlich mit dem JDK zusammenhängen.
Verwenden Sie JDK6u16 oder neuer zum Starten von Eclipse (Sie können dann so viele JDKs definieren, die Sie in Eclipse kompilieren möchten : Nicht weil Sie eine Eclipse mit JDK6 starten, müssen Sie mit demselben JDK kompilieren).

Max

Beachten Sie die Verwendung von:

--launcher.XXMaxPermSize
384m
-vmargs
-XX:MaxPermSize=128m

Wie im Eclipse-Wiki dokumentiert ,

Eclipse 3.3 unterstützt ein neues Argument für den Launcher : --launcher.XXMaxPermSize.
Wenn es sich bei der verwendeten VM um eine Sun-VM handelt und noch kein -XX:MaxPermSize=VM-Argument vorhanden ist, wird der Launcher automatisch -XX:MaxPermSize=256mzur Liste der verwendeten VM-Argumente hinzugefügt .
Der 3.3 Launcher kann nur Sun VMs unter Windows identifizieren.

Wie in diesem Eintrag beschrieben :

Nicht alle vms akzeptieren das -XX:MaxPermSizeArgument, weshalb es auf diese Weise übergeben wird. Es kann (oder kann nicht) Probleme bei der Identifizierung von Sonnen-VMS geben.
Hinweis: Eclipse 3.3.1 weist einen Fehler auf, bei dem der Launcher eine Sun-VM nicht erkennen kann und daher nicht die richtige PermGen-Größe verwendet. Es scheint, dass dies auch unter Mac OS X für 3.3.0 ein bekannter Fehler war .
Wenn Sie eine dieser Plattformkombinationen verwenden, fügen Sie das -XXFlag eclipse.iniwie oben beschrieben hinzu.

Anmerkungen:

  • Die 384mZeile " " wird in den =384mTeil " " des VM-Arguments übersetzt. Wenn bei der VM bei " m" zwischen Groß- und Kleinschreibung unterschieden wird , gilt dies auch für dieses Argument.
  • Das --launcher.Präfix " " gibt an, dass das Argument vom Launcher selbst verwendet wird und zu launcher-spezifischen Argumenten hinzugefügt wurde, um Namenskollisionen mit Anwendungsargumenten zu vermeiden. (Andere Beispiele sind --launcher.library, --launcher.suppressErrors)

Der -vmargs -XX:MaxPermSize=384mTeil ist das Argument, das direkt an die VM übergeben wird, wobei der Launcher vollständig umgangen wird und keine Überprüfung des VM-Herstellers verwendet wird.

VonC
quelle
Ich hatte ein paar Probleme damit für die neueste Version von eclipse 3.5x64: --launcher.library plugins / org.eclipse.equinox.launcher.win32.win32.x86_64_1.0.200.v20090519 -startup plugins / org.eclipse.equinox.launcher_1 .0.200.v20090520.jar auch ich musste ein jdk JAVA_HOME / bin / javaw für das m2eclipse Plugin verwenden. Ansonsten ist das verrückt genial.
Nathan Feger
Tun diese beiden nicht dasselbe? "--launcher.XXMaxPermSize 384m" und "-XX: MaxPermSize = 128m"
Igor Zinov'yev
@Igor Zinov'yev: Es ist ein bisschen redundant, aber beide können je nach Plattform und Eclipse-Version nützlich sein. Ich habe sie auf den gleichen Wert zurückgesetzt und meine Antwort mit einer Dokumentation zu diesen Einstellungen abgeschlossen.
VonC
Wenn Sie immer die neueste und beste VM verwenden möchten, warum wird dann das Argument "-Dosgi.requiredJavaVersion = 1.5" nicht mit 1.6 verwendet?
Tony R
63

Eclipse Ganymede 3.4.2 Einstellungen


Neuere Einstellungen finden Sie oben unter Eclipse Galileo 3.5-Einstellungen .


JDK

Die beste JVM-Einstellung enthält meiner Meinung nach immer das neueste JDK, das Sie finden können (also vorerst jdk1.6.0_b07 bis b16, außer b14 und b15 ).

eclipse.ini

Selbst mit diesen ziemlich niedrigen Speichereinstellungen kann ich große Java-Projekte (zusammen mit einem Webserver) auf meinem alten (2002) Desktop mit 2Go RAM ausführen.

-showlocation
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-framework
plugins\org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar
-vm
jdk1.6.0_10\jre\bin\client\jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx384m
-Xss2m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:CompileThreshold=5
-Dcom.sun.management.jmxremote

Siehe GKelly der SO Antwort und Piotr Gabryanczyk Blog - Eintrag , um weitere Informationen über die neuen Möglichkeiten.

Überwachung

Sie können auch Folgendes in Betracht ziehen:

C:\[jdk1.6.0_0x path]\bin\jconsole.exe

Wie bereits in einer früheren Frage zum Speicherverbrauch erwähnt .

VonC
quelle
1
Wofür ist -Xssv2m, wenn ich es in die VM-Einstellungen einbeziehe, wird Eclipse nicht gestartet? Ich habe mir die Dokumente für JVM-Einstellungen angesehen, konnte sie aber nicht finden
Craig Angus
Richtig ... das war ein Tippfehler: Xss2m, nicht Xssv2m: -Xss bestimmt die Größe des Stapels: -Xss1024k. Wenn der Stapelspeicher zu klein ist, sehen Sie schließlich eine Ausnahmeklasse java.lang.StackOverflowError (eine mythische Fehlermeldung hier ;-))
VonC
Endlich kam ich dazu, die zweiten Einstellungen zu verwenden, und war erstaunt, wie gut sie funktionieren!
Craig Angus
Habe schon eine Weile die Möglichkeit gehabt, die Einstellungen zu verwenden, Eclipse scheint bissig, aber Ameisen-Builds zu machen scheint langsamer zu sein ???
Craig Angus
@Craig Angus: Seltsam, welche Version von Eclipse benutzt du? Und welche Ameisenversion ist darin enthalten?
VonC
20

Eclipse Indigo 3.7.2 Einstellungen (64 Bit Linux)

Einstellungen für Sun / Oracle Java- Version "1.6.0_31" und Eclipse 3.7 unter x86-64 Linux:

-nosplash
-vmargs
-Xincgc
-Xss500k
-Dosgi.requiredJavaVersion=1.6
-Xms64m
-Xmx200m
-XX:NewSize=8m
-XX:PermSize=80m
-XX:MaxPermSize=150m
-XX:MaxPermHeapExpansion=10m
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=70
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+UseParNewGC
-XX:+CMSConcurrentMTEnabled
-XX:ConcGCThreads=2
-XX:ParallelGCThreads=2
-XX:+CMSIncrementalPacing
-XX:CMSIncrementalDutyCycleMin=0
-XX:CMSIncrementalDutyCycle=5
-XX:GCTimeRatio=49
-XX:MaxGCPauseMillis=20
-XX:GCPauseIntervalMillis=1000
-XX:+UseCMSCompactAtFullCollection
-XX:+CMSClassUnloadingEnabled
-XX:+DoEscapeAnalysis
-XX:+UseCompressedOops
-XX:+AggressiveOpts
-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses

Beachten Sie, dass hierfür nur 200 MB für den Heap und 150 MB für den Nicht-Heap verwendet werden. Wenn Sie große Plugins verwenden, möchten Sie möglicherweise die Grenzwerte "-Xmx200m" und "-XX: MaxPermSize = 150m" erhöhen.

Das primäre Optimierungsziel für diese Flags bestand darin, die Latenz in allen Fällen zu minimieren und als sekundäres Optimierungsziel die Speichernutzung zu minimieren.

Mikko Rantalainen
quelle
Funktioniert fantastisch für mich (obwohl ich die Werte für die speicherbezogenen Einstellungen verdoppelt habe, ist es immer noch niedrig und blasig schnell!)
Aktau
Sie haben sowohl -XX: + UseConcMarkSweepGC als auch -XX: + UseParNewGC. Warum? Ich glaube nicht, dass Sie beide Müllsammler verwenden können, und ich bin mir nicht sicher, welcher letztendlich verwendet wird.
Hermann
Ich dachte, dass -XX: + UseConcMarkSweepGC für die Garbage Collection der alten Generation und -XX: + UseParNewGC für die Eden Garbage Collection verwendet wird.
Mikko Rantalainen
3
Jede Option und jedes Argument für eine Option muss in einer eigenen Zeile stehen.
Josh Clemm
14

-showlocation

Damit Eclipse zweimal ausgeführt wird und Sie wissen, mit welchem ​​Arbeitsbereich Sie es zu tun haben

Eclipse 3.6 fügt eine Einstellungsoption hinzu, um anzugeben, was angezeigt werden soll, was Workspace name (shown in window title)viel besser funktioniert als -showlocationaus drei Gründen:

  1. Sie müssen Eclipse nicht neu starten, damit es wirksam wird.
  2. Sie können einen Funktionscode auswählen.
  3. Es wird zuerst vor der Perspektive und dem Anwendungsnamen angezeigt.
Stephen Denne
quelle
9

Wenn Sie mit jdk6 Update 14 arbeiten, würde ich empfehlen, den G1-Garbage Collector zu verwenden, der die Leistung zu verbessern scheint.

Entfernen Sie dazu die folgenden Einstellungen:

-XX: + UseConcMarkSweepGC
-XX: + CMSIncrementalMode
-XX: + CMSIncrementalPacing

und ersetzen Sie sie durch diese:

-XX: + UnlockExperimentalVMOptions
-XX: + UseG1GC

Ben W.
quelle
9

Wenn Sie Linux + Sun JDK / JRE 32 Bit verwenden , ändern Sie "-vm" in:

-vm 
[your_jdk_folder]/jre/lib/i386/client/libjvm.so

Wenn Sie Linux + Sun JDK / JRE 64 Bit verwenden , ändern Sie "-vm" in:

-vm
[your_jdk_folder]/jre/lib/amd64/server/libjvm.so

Das funktioniert gut für mich unter Ubuntu 8.10 und 9.04

Gilberto Olimpio
quelle
Soll Eclipse ein JDK als Standardumgebung verwenden?
Thorbjørn Ravn Andersen
Dies kann verwendet werden, damit Eclipse ein bestimmtes / anderes JDK als Standardumgebung verwendet.
Gilberto Olimpio
7

Sie können auch versuchen, mit JRockit zu laufen . Es ist eine für Server optimierte JVM, aber viele lang laufende Clientanwendungen wie IDEs laufen sehr gut auf JRockit. Eclipse ist keine Ausnahme. JRockit hat keinen Perm-Space, Sie müssen ihn also nicht konfigurieren.

Es ist möglich, ein Pausenzeitziel (ms) festzulegen, um zu vermeiden, dass lange gc-Pausen die Benutzeroberfläche blockieren.

-showsplash
org.eclipse.platform
-vm
 C:\jrmc-3.1.2-1.6.0\bin\javaw.exe 
-vmargs
-XgcPrio:deterministic
-XpauseTarget:20

Normalerweise setze ich -Xmx und -Xms nicht ein und lasse JRockit den Heap nach Bedarf vergrößern. Wenn Sie Ihre Eclipse-Anwendung mit JRockit starten, können Sie mithilfe der JRockit Mission Control-Toolsuite auch Speicherlecks in Ihrer Anwendung überwachen, profilieren und finden. Sie laden die Plugins von dieser Update-Site herunter . Hinweis: Funktioniert nur für Eclipse 3.3 und Eclipse 3.4

Kire Haglin
quelle
Ich habe Eclipse auf JRockit in der Vergangenheit ausgeführt und bin sehr gut gelaufen
Craig Angus
5

Hier ist meine eigene Einstellung für meinen Eclipse, der auf einem i7 2630M 16 GB RAM-Laptop ausgeführt wird. Diese Einstellung wird seit einer Woche ohne einen einzigen Absturz verwendet, und Eclipse 3.7 läuft reibungslos.

-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms1024m
-Xmx4096m 
-XX:MaxPermSize=256m

Berechnungen: Für Win 7 x64

  • Xms = physischer Speicher / 16
  • Xmx = physischer Speicher / 4
  • MaxPermSize = Entspricht dem Standardwert von 256 m
Geschweifte Klammern
quelle
Wow 16G Laptop? Ich bin neugierig. Ist das ein System76? : D
Phil
5
-startup
../../../plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx_1.1.100.v20110502
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-Dcom.sun.management.jmxremote
-Declipse.p2.unsignedPolicy=allow

Und diese Einstellung hat für mich wie ein Zauber gewirkt. Ich verwende OS X10.6, Eclipse 3.7 Indigo, JDK1.6.0_24

Ein Nullzeiger
quelle
Vielen Dank, dies hat meine Leistung erheblich verbessert (ähnliches Setup). Aber ich habe die maximale Heap-Größe auf 1024 MB erhöht.
Jeff Evans
4

Meine eigenen Einstellungen (Java 1.7, ändern für 1.6):

-vm
C:/Program Files (x86)/Java/jdk1.7.0/bin
-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20100628
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-server
-Dosgi.requiredJavaVersion=1.7
-Xmn100m
-Xss1m
-XgcPrio:deterministic
-XpauseTarget:20
-XX:PermSize=400M
-XX:MaxPermSize=500M
-XX:CompileThreshold=10
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UnlockExperimentalVMOptions
-XX:+DoEscapeAnalysis
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
-XX:+AggressiveOpts
-Xms512m
-Xmx512m
Chris Dennett
quelle
3

Eclipse mag viel RAM. Verwenden Sie mindestens -Xmx512M. Mehr falls verfügbar.

Ken
quelle
2

XX: + UseParallelGC, das ist die großartigste Option aller Zeiten !!!


quelle
1

-vm
C: \ Programme \ Java \ jdk1.6.0_07 \ jre \ bin \ client \ jvm.dll

Geben Sie an, welche Java-Version Sie verwenden, und verwenden Sie die DLL, anstatt einen Java-Prozess zu starten

Stephen Denne
quelle
0

Folgendes verwende ich (obwohl ich sie in der Verknüpfung anstelle der Einstellungsdatei habe):

eclipse.exe -showlocation -vm "C: \ Java \ jdk1.6.0_07 \ bin \ javaw.exe" -vmargs -Xms256M -Xmx768M -XX: + UseParallelGC -XX: MaxPermSize = 128M

Dave L.
quelle