Quali sono le migliori impostazioni JVM per Eclipse? [chiuso]


315

Quali sono le migliori impostazioni JVM che hai trovato per eseguire Eclipse?


8
Le nuove e migliorate eclipse.iniimpostazioni per Helios 3.6 sono qui (qui di seguito, in una nuova risposta): stackoverflow.com/questions/142357/...
VonC

6
È sorprendente che la domanda chiusa come non costruttiva abbia un punteggio così alto ...
bancer

1
Questa domanda è stata posta quando la risposta più recente a una domanda come questa nel 2008 è stata eclipsezone.com/eclipse/forums/t20732.html . Il set di risposte è cresciuto perché sono state rilasciate nuove versioni di eclipse e java, i successivi aggiornamenti hanno mantenuto le risposte aggiornate. Chiudendo la domanda, le risposte diventeranno stantie. L'unico modo in cui mi viene in mente di riformulare questa domanda sarebbe quello di renderla specifica per la versione, che penso sia peggio in quanto causerebbe a più domande di rispondere sostanzialmente allo stesso problema
Craig Angus,

10
Accetto - chiudere domande come questa è follia - la follia ti dico - domande come questa sono le più utili e interessanti sul sito!
Luigi Plinge,

3
Secondo il motivo della chiusura, "Ci aspettiamo che le risposte riguardino generalmente fatti, riferimenti o competenze specifiche". Penso che chiudere questa domanda sia un tratto. Facciamo attenzione usando i poteri di censura. Direi che in caso di dubbio, è meglio "lasciare che la conoscenza sia libera" e aperta.
luiscolorado,

Risposte:


315

È di nuovo quel periodo dell'anno: "eclipse.ini prende 3" le impostazioni tornano indietro!

Impostazioni di Eclipse Helios 3.6 e 3.6.x.

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

Dopo le impostazioni per Eclipse Ganymede 3.4.x e Eclipse Galileo 3.5.x , ecco un approfondimento su un file di impostazioni eclipse.ini "ottimizzato" per Eclipse Helios 3.6.x:

( per "ottimizzato", intendo essere in grado di eseguire una Eclipse a tutto campo sulla nostra merda workstation al lavoro, qualche vecchio P4 del 2002 con 2Go RAM e XPSp3. Ma ho anche testato le stesse impostazioni su Windows7 )

eclipse.ini

testo alternativo

ATTENZIONE : per piattaforme non Windows, utilizzare l'opzione proprietaria Sun -XX:MaxPermSizeanziché l'opzione proprietaria Eclipse --launcher.XXMaxPermSize.
Cioè: a meno che non si stia utilizzando l'ultima build jdk6u21 7 . Vedi la sezione Oracle di seguito.

-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

Nota:
adattare il p2.reconciler.dropins.directorya una directory esterna di vostra scelta.
Vedi questa risposta SO . L'idea è quella di poter rilasciare nuovi plugin in una directory indipendentemente da qualsiasi installazione di Eclipse.

Le seguenti sezioni descrivono in dettaglio cosa si trova in questo eclipse.inifile.


Il temuto Oracle JVM 1.6u21 (pre build 7) ed Eclipse si arresta in modo anomalo

Andrew Niefer mi ha avvisato di questa situazione e ha scritto un post sul blog su un argomento vm non standard ( -XX:MaxPermSize) e può impedire a vms di altri fornitori di non avviarsi affatto.
Ma la versione eclipse di tale opzione ( --launcher.XXMaxPermSize) non funziona con il nuovo JDK (6u21, a meno che non si stia utilizzando la build 7 621, vedere di seguito).

Il finalela soluzione è disponibile su Eclipse Wiki e per Helios su Windows solo con 6u21 pre build 7 :

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

Questo è tutto. Nessuna impostazione per modificare qui (di nuovo, solo per Helios su Windows con un pre-build 6u21 7 ).
Per la piattaforma non Windows, è necessario ripristinare l'opzione di proprietà Sun -XX:MaxPermSize.

Il problema si basa su una regressione: l' identificazione JVM non riesce a causa del rebranding Oracle in java.exe e ha attivato il bug 319514 su Eclipse.
Andrew si è preso cura del Bug 320005 - [launcher] --launcher.XXMaxPermSize: isSunVMdovrebbe tornare vero per Oracle , ma sarà solo per Helios 3.6.1.
Francis Upton , un altro committer Eclipse, riflette su tutta la situazione .

Aggiornamento u21b7, 27 luglio :
Oracle ha regredito la modifica per la prossima versione di Java 6 e non la implementerà nuovamente fino a JDK 7 .
Se usi jdk6u21 build 7 , puoi tornare --launcher.XXMaxPermSizeall'opzione (opzione eclissi) anziché -XX:MaxPermSize(opzione non standard).
Il rilevamento automatico che si verifica nello shim del launcher Ceclipse.exe cercherà comunque la " Sun Microsystems" stringa, ma con 6u21b7 ora funzionerà di nuovo.

Per ora, conservo ancora la -XX:MaxPermSizeversione (perché non ho idea di quando tutti lanceranno eclissi il JDK giusto ).


Implicito `-startup` e` --launcher.library`

Contrariamente alle impostazioni precedenti, il percorso esatto per quei moduli non è più impostato, il che è conveniente poiché può variare tra diverse versioni di Eclipse 3.6.x:

  • avvio: se non specificato, l'eseguibile cercherà nella directory dei plugin il org.eclipse.equinox.launcherpacchetto con la versione più alta.
  • launcher.library: se non specificato, l'eseguibile cerca nella pluginsdirectory il org.eclipse.equinox.launcher.[platform]frammento appropriato con la versione più alta e utilizza la libreria condivisa denominata eclipse_*all'interno.

Usa JDK6

Il JDK6 ora è esplicitamente richiesto per avviare Eclipse:

-Dosgi.requiredJavaVersion = 1.6

Questa domanda SO riporta un'incidenza positiva per lo sviluppo su Mac OS.


+ UnlockExperimentalVMOptions

Le seguenti opzioni fanno parte di alcune delle opzioni sperimentali di Sun JVM.

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

Sono stati segnalati in questo post del blog per accelerare potenzialmente Eclipse.
Vedi tutte le opzioni JVM qui e anche nella pagina delle opzioni dell'hotspot Java ufficiale .
Nota: l' elenco dettagliato di tali opzioni riporta che UseFastAccessorMethodspotrebbero essere attivi per impostazione predefinita.

Vedi anche "Aggiorna la tua JVM" :

Come promemoria, G1 è il nuovo Garbage Collector in preparazione per JDK 7, ma già utilizzato nella versione 6 di u17.


Apertura di file in Eclipse dalla riga di comando

Vedi il post sul blog di Andrew Niefer che riporta questa nuova opzione:

--launcher.defaultAction
openFile

Questo dice al programma di avvio che se viene chiamato con una riga di comando che contiene solo argomenti che non iniziano con " -", tali argomenti devono essere trattati come se seguissero " --launcher.openFile".

eclipse myFile.txt

Questo è il tipo di riga di comando che il programma di avvio riceverà su Windows quando si fa doppio clic su un file associato a Eclipse oppure si selezionano i file e si sceglie " Open With" o " Send To" Eclipse.

I percorsi relativi verranno risolti prima nella directory di lavoro corrente, e in secondo luogo nella directory del programma eclipse.

Vedi bug 301033 come riferimento. Originariamente bug 4922 (ottobre 2001, risolto 9 anni dopo).


p2 e il prompt della finestra di dialogo Unsigned

Se sei stanco di questa finestra di dialogo durante l'installazione di molti plugin:

testo alternativo

, aggiungi nel tuo eclipse.ini:

-Declipse.p2.unsignedPolicy=allow

Vedi questo post sul blog di Chris Aniszczy e il bug report 235526 .

Voglio dire che la ricerca sulla sicurezza sostiene il fatto che un minor numero di richieste è migliore.
Le persone ignorano le cose che compaiono nel flusso di qualcosa che vogliono fare.

Per 3.6, non dovremmo far apparire avvisi nel mezzo del flusso - non importa quanto semplifichiamo, le persone semplicemente li ignoreranno.
Invece, dovremmo raccogliere tutti i problemi, non installare quei bundle con problemi e riportare l'utente a un punto del flusso di lavoro in cui può risolvere il problema : aggiungere fiducia, configurare la politica di sicurezza in modo più libero, ecc. Questo si chiama 'sicuro messa in scena " .

---------- http://www.eclipse.org/home/categories/images/wiki.gif alt text http://www.eclipse.org/home/categories/images/wiki.gif testo alternativo http://www.eclipse.org/home/categories/images/wiki.gif

Opzioni aggiuntive

Tali opzioni non sono direttamente eclipse.inisopra, ma possono tornare utili se necessario.


Il problema `user.home` su Windows7

All'avvio di eclipse, leggerà il suo file keystore (dove sono conservate le password), un file situato in user.home.
Se per qualche motivo che user.homenon si risolve correttamente in un percorso completo, Eclipse non si avvia.
Inizialmente sollevato in questa domanda SO , se si verifica questo, è necessario ridefinire il file keystore in un percorso esplicito (non più user.home per risolvere all'inizio)

Aggiungi nel tuo eclipse.ini:

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

Questo è stato monitorato dal bug 300577 , è stato risolto in questa altra domanda SO .


Modalità di debug

Aspetta, c'è più di un file di impostazione in Eclipse.
se aggiungi alla tua eclipse.inil'opzione:

-debug

, si attiva la modalità debug ed Eclipse cercherà un altro file di impostazione: un .optionsfile in cui è possibile specificare alcune opzioni OSGI.
E questo è fantastico quando aggiungi nuovi plugin attraverso la cartella dropins.
Aggiungi nel tuo file .options le seguenti impostazioni, come descritto in questo post sul blog " Diagnosi di Dropins " :

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

P2 ti informerà quali pacchetti sono stati trovati nella dropins/cartella, quale richiesta è stata generata e qual è il piano di installazione. Forse non è una spiegazione dettagliata di ciò che è realmente accaduto e cosa è andato storto, ma dovrebbe darti informazioni forti su dove iniziare:

  • era il tuo pacchetto nel piano?
  • È stato un problema di installazione (errore P2)
  • o forse non è ottimale includere la tua funzione?

Questo deriva dal Bug 264924 - [riconciliatore] Nessuna diagnosi dei problemi di dropins , che alla fine risolve il seguente problema come:

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

Questa è una configurazione problematica poiché OCL dipende dall'EMF che manca.
3.5M5 non fornisce diagnosi di questo problema.

Inizia eclissi.
Nessun problema evidente. Niente nel registro errori.

  • Help / About / Plugini dettagli mostrano org.eclipse.ocl.doc, ma non org.eclipse.ocl.
  • Help / About / Configurationi dettagli non hanno menzione (diagnostica) di org.eclipse.ocl.
  • Help / Installation / Information Installed Softwarenon ha menzionato org.eclipse.ocl.

Dove sono i simpatici marker di errore?


Sentiero di classe manifest

Vedi questo post sul blog :

  • In Galileo (aka Eclipse 3.5), JDT ha iniziato a risolvere il percorso di classe manifest nelle librerie aggiunte al percorso di compilazione del progetto. Funzionava indipendentemente dal fatto che la libreria fosse aggiunta al percorso di compilazione del progetto direttamente o tramite un contenitore classpath, come la funzione di libreria utente fornita da JDT o quella implementata da una terza parte.
  • In Helios, questo comportamento è stato modificato per escludere i contenitori del classpath dalla risoluzione manifest del classpath.

Ciò significa che alcuni dei tuoi progetti potrebbero non essere più compilati in Helios.
Se vuoi ripristinare il comportamento di Galileo, aggiungi:

-DresolveReferencedLibrariesForContainers=true

Per i riferimenti , vedere bug 305037 , bug 313965 e bug 313890 .


Stack IPV4

Questa domanda SO menziona una potenziale soluzione quando non si accede ai siti di aggiornamento dei plug-in:

-Djava.net.preferIPv4Stack=true

Menzionato qui nel caso in cui potesse aiutare nella tua configurazione.


JVM1.7x64 potenziali ottimizzazioni

Questo articolo riporta:

Per la cronaca, le opzioni più veloci che ho trovato finora per il mio banco di prova con la JVM 1.7 x64 n Windows sono:

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

Ma ci sto ancora lavorando ...


Come da questo link, oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#icms , devi avere -XX: + UsaConcMarkSweepGC per usare -XX: + CMSIncrementalMode. Quello che manca al tuo esempio sopra. Non avremmo bisogno di CMSIncrementalMode nel caso in cui utilizziamo G1 GC, giusto?
RuntimeException,

1
Ehi, G1GC è un disastro su un Mac. Mangia l'intera macchina, richiedendo un riavvio.
bmargulies,

4
@VonC: -XX:CompileThreshold=5causa rallentamenti ORRENDI per me. Sbarazzarsi di questa opzione da solo riduce il tempo di avvio di Eclipse a 17 secondi da> 1 minuto !! Per non parlare di quanto terribilmente lento l'IDE fosse in generale. Vedi questo link
TrinitronX,

3
@TrinitronX: (e in realtà tutti), -XX:CompileThreshold=5è un valore molto basso (valore predefinito = 10000). Questo valore rappresenta il numero di invocazioni / rami del metodo prima di compilarlo. Un valore troppo basso causerà il riempimento prematuro di CodeCache e la Console potrebbe riportare: CodeCache is full. Compiler has been disabled Una volta che il compilatore è disabilitato, noterai la lentezza nell'app. Esistono due modi per risolvere questo problema: 1. Usa -XX:CompileThreshold=1000(perfeziona questo numero) o 2. Prova ad aumentare la dimensione della cache del codice usando -XX:ReservedCodeCacheSize=64m(doppio dai 32m predefiniti)
Drupad Panchal,

4
per linux usa /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/i386/client/libjvm.so per la posizione jvm
r15habh

76

Impostazioni Eclipse Galileo 3.5 e 3.5.1

Attualmente (novembre 2009), sto testando con jdk6 update 17 il seguente set di opzioni di configurazione (con Galileo - eclipse 3.5.x, vedi sotto per 3.4 o sopra per Helios 3.6.x ):
(ovviamente, adatta i relativi percorsi presente in questo eclipse.ini ai percorsi corretti per la configurazione)

Nota: per eclipse3.5 , sostituire startupe launcher.librarylinee con:

-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

Vedi anche la mia risposta originale sopra per ulteriori informazioni.

Modifiche (da luglio 2009)

  • si riferisce al programma di avvio e non al framework
  • plugin condivisi: org.eclipse.equinox.p2.reconciler.dropins.directoryopzione.
  • Galileo supporta percorsi completamente relativi per area di lavoro o VM (evitare di dover modificare quelli da un'installazione di eclissi a un'altra, se, naturalmente, la tua JVM e l'area di lavoro rimangono gli stessi)
    Prima, quei percorsi relativi continuavano a essere riscritti in quelli assoluti quando eclipse si è avviato ...
  • È inoltre possibile copiare la directory JRE di un'installazione JDK Java all'interno della directory eclipse

Avvertenze

Si è verificato un errore con punti di interruzione ignorati effettivamente correlati al JDK.
Usa JDK6u16 o più recente per avviare eclipse (puoi quindi definire quanti JDK vuoi compilare all'interno di eclipse: non è perché lanci un'eclissi con JDK6 che dovrai compilare con quello stesso JDK).

Max

Nota l'uso di:

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

Come documentato nel Wiki di Eclipse ,

Eclipse 3.3 supporta un nuovo argomento per il programma di avvio: --launcher.XXMaxPermSize.
Se la macchina virtuale in uso è una macchina virtuale Sun e non esiste già un -XX:MaxPermSize=argomento della macchina virtuale, il programma di avvio si aggiungerà automaticamente -XX:MaxPermSize=256mall'elenco degli argomenti della macchina virtuale utilizzati.
Il launcher 3.3 è in grado di identificare solo Sun VM su Windows.

Come dettagliato in questa voce :

Non tutti i vms accettano l' -XX:MaxPermSizeargomento ed è per questo che viene passato in questo modo. Potrebbero esistere (o meno) problemi con l'identificazione di sun vms.
Nota: Eclipse 3.3.1 presenta un bug in cui il programma di avvio non è in grado di rilevare una macchina virtuale Sun e pertanto non utilizza la dimensione PermGen corretta. Sembra che questo potrebbe essere stato un bug noto anche su Mac OS X per 3.3.0 .
Se stai utilizzando una di queste combinazioni di piattaforme, aggiungi il -XXflag eclipse.inicome descritto sopra.

Appunti:

  • la 384mriga " " si traduce nella parte " =384m" dell'argomento VM, se la VM fa distinzione tra maiuscole e minuscole sul " m", allora lo è anche questo argomento.
  • il --launcher.prefisso " ", specifica che l'argomento viene utilizzato dal programma di avvio stesso ed è stato aggiunto agli argomenti specifici del programma di avvio per evitare collisioni di nomi con argomenti dell'applicazione. (Altri esempi sono --launcher.library, --launcher.suppressErrors)

La -vmargs -XX:MaxPermSize=384mparte è l'argomento passato direttamente alla VM, ignorando completamente il programma di avvio e non viene utilizzato alcun controllo sul fornitore della VM.


Ho avuto un paio di problemi con questo per l'ultima versione di 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 anche io ho dovuto usare un jdk JAVA_HOME / bin / javaw, per il plugin m2eclipse. Altrimenti questo è pazzesco fantastico.
Nathan Feger,

Questi due non stanno facendo la stessa cosa? "--launcher.XXMaxPermSize 384m" e "-XX: MaxPermSize = 128m"
Igor Zinov'yev

@Igor Zinov'yev: è un po 'ridondante, ma entrambi possono essere utili, a seconda della versione della piattaforma e dell'eclissi. Li ho ripristinati allo stesso valore e ho completato la mia risposta con un po 'di documentazione su tali impostazioni.
VonC,


Se vuoi sempre usare l'ultima e la più grande VM, allora perché l'argomento "-Dosgi.requiredJavaVersion = 1.5" non usa 1.6?
Tony R,

63

Impostazioni Eclipse Ganimede 3.4.2


Per le impostazioni più recenti, vedi le impostazioni Eclipse Galileo 3.5 sopra .


JDK

La migliore impostazione JVM sempre , a mio parere, include l' ultima JDK si possono trovare (quindi per ora, jdk1.6.0_b07 fino a b16, tranne B14 e B15 )

eclipse.ini

Anche con quelle impostazioni di memoria piuttosto basse, posso eseguire grandi progetti Java (insieme a un server Web) sul mio vecchio desktop (2002) con 2Go RAM.

-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

Vedi la risposta SO di GKelly e il blog di Piotr Gabryanczyk per maggiori dettagli sulle nuove opzioni.

Monitoraggio

Puoi anche prendere in considerazione il lancio:

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

Come detto in una domanda precedente sul consumo di memoria .


1
a cosa serve -Xssv2m, quando lo includo nelle impostazioni di vm eclipse non si avvia, ho dato un'occhiata ai documenti per le impostazioni di JVM ma non sono riuscito a trovarlo
Craig Angus

Giusto ... quello era un refuso: Xss2m, non Xssv2m: -Xss determina la dimensione dello stack: -Xss1024k. Se lo spazio dello stack è troppo piccolo, alla fine vedrai una classe di eccezione java.lang.StackOverflowError (un messaggio di errore mitico qui intorno ;-))
VonC

Finalmente ho iniziato a usare il secondo set di impostazioni e sono rimasto sorpreso dal loro funzionamento!
Craig Angus,

Ho avuto la possibilità di utilizzare le impostazioni per un po 'di tempo, l'eclissi sembra scattante, ma fare build di formiche sembra più lento ???
Craig Angus,

@Craig Angus: strano, quale versione di eclissi stai usando? E quale versione di formica è inclusa in essa?
VonC,

20

Impostazioni Eclipse Indigo 3.7.2 (Linux a 64 bit)

Impostazioni per Sun / Oracle versione Java "1.6.0_31" ed Eclipse 3.7 in esecuzione su Linux x86-64:

-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

Si noti che questo utilizza solo 200 MB per l'heap e 150 MB per il non-heap. Se stai usando plugin enormi, potresti voler aumentare sia i limiti "-Xmx200m" che "-XX: MaxPermSize = 150m".

L'obiettivo primario di ottimizzazione per questi flag è stato di ridurre al minimo la latenza in tutti i casi e come obiettivo di ottimizzazione secondario ridurre al minimo l'utilizzo della memoria.


Funziona in modo fantastico per me (anche se ho raddoppiato i valori per le impostazioni relative alla memoria, è ancora basso e velocissimo!)
Aktau,

Hai entrambi -XX: + UseConcMarkSweepGC e -XX: + UseParNewGC. Perché? Non penso che tu possa usare entrambi i raccoglitori di immondizia, e non sono sicuro di quale finalmente venga utilizzato.
herman,

Ho pensato che -XX: + UseConcMarkSweepGC è per la garbage collection di vecchia generazione e -XX: + UseParNewGC è usato per la garbage collection di eden.
Mikko Rantalainen il


3
Ogni opzione e ogni argomento di un'opzione devono essere sulla propria riga.
Josh Clemm,

14

-showlocation

Per semplificare l'esecuzione di Eclipse due volte e sapere con quale area di lavoro hai a che fare

Eclipse 3.6 aggiunge un'opzione delle preferenze per specificare cosa mostrare per il Workspace name (shown in window title)quale funziona molto meglio rispetto -showlocationa tre motivi:

  1. Non è necessario riavviare eclipse perché abbia effetto.
  2. Puoi scegliere un codice funzione.
  3. Appare prima, prima della prospettiva e del nome dell'applicazione.

9

Se stai andando con l'aggiornamento 14 di jdk6, suggerirei di utilizzare il Garbage Collector G1 che sembra aiutare le prestazioni.

Per fare ciò, rimuovere queste impostazioni:

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

e sostituirli con questi:

-XX: + UnlockExperimentalVMOptions
-XX: + UsaG1GC


9

Se si utilizza Linux + Sun JDK / JRE 32 bit , modificare "-vm" in:

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

Se si utilizza Linux + Sun JDK / JRE 64 bit , modificare "-vm" in:

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

Funziona benissimo per me su Ubuntu 8.10 e 9.04


Questo deve avere Eclipse che utilizza un JDK come ambiente predefinito?
Thorbjørn Ravn Andersen,

Questo può essere usato per avere Eclipse usando un JDK specifico / diverso come ambiente predefinito.
Gilberto Olimpio,

7

Puoi anche provare a correre con JRockit . È una JVM ottimizzata per i server, ma molte applicazioni client di lunga durata, come IDE, funzionano molto bene su JRockit. Eclipse non fa eccezione. JRockit non ha uno spazio perm, quindi non è necessario configurarlo.

È possibile impostare un tempo di pausa (ms) per evitare lunghe pause di gc che bloccano l'interfaccia utente.

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

Di solito non mi preoccupo di impostare -Xmx e -Xms e lasciare che JRockit faccia crescere l'heap come ritiene necessario. Se avvii la tua applicazione Eclipse con JRockit puoi anche monitorare, profilare e trovare perdite di memoria nella tua applicazione usando la suite di strumenti JRockit Mission Control. Si scaricano i plugin da questo sito di aggiornamento . Nota, funziona solo per Eclipse 3.3 ed Eclipse 3.4


Ho corso eclissi su JRockit in passato e ho corso molto bene
Craig Angus,

5

Ecco le mie impostazioni per il mio Eclipse in esecuzione su laptop i7 2630M da 16 GB di RAM, questa impostazione è stata utilizzata per una settimana, senza un singolo arresto anomalo, ed Eclipse 3.7 funziona senza problemi.

-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

Calcoli: per Win 7 x64

  • Xms = memoria fisica / 16
  • Xmx = memoria fisica / 4
  • MaxPermSize = Uguale al valore predefinito, che è 256 m

Wow laptop 16G? Sono curioso. È un 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

E queste ambientazioni hanno funzionato come un incanto per me. Sto eseguendo OS X10.6, Eclipse 3.7 Indigo, JDK1.6.0_24


Grazie, questo mi ha aiutato parecchio (impostazioni simili). Ma ho aumentato la dimensione massima dell'heap a 1024 MB.
Jeff Evans,

4

Le mie impostazioni (Java 1.7, modifica per 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

3

A Eclipse piace molta RAM. Utilizzare almeno -Xmx512M. Altro se disponibile.



2

XX: + Usa ParallelGC questa è l'opzione più fantastica di sempre !!!


1

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

Per specificare quale versione java stai usando, e usa la dll invece di avviare un processo javaw


0

Ecco cosa uso (anche se li ho nel collegamento anziché nel file delle impostazioni):

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.