Come posso ridurre l’uso della memoria di Eclipse Ganimede?

Uso la recente versione di Eclipse di Ganymede, in particolare la distro per Java EE e gli sviluppatori web. Ho installato alcuni plug-in aggiuntivi (es. Subclipse, Spring, FindBugs) e rimosso tutti i plugin Mylyn.

Non faccio nulla di particolarmente pesante in Eclipse come l’avvio di un app server o la connessione a database, eppure per qualche ragione, dopo diverse ore di utilizzo, vedo che Eclipse utilizza quasi 500 MB di memoria.

Qualcuno sa perché Eclipse usa tanta memoria (leaky?) E, cosa più importante, se c’è qualcosa che posso fare per migliorare questo?

Non so in particolare su Eclipse, utilizzo IntelliJ che soffre anche di crescita della memoria (indipendentemente dal fatto che tu la stia utilizzando triggersmente o meno!). Ad ogni modo, in IntelliJ, non ho potuto eliminare il problema, ma ho rallentato la crescita della memoria giocando con le opzioni VM di runtime. Potresti provare a reimpostarli in Eclipse e vedere se fanno la differenza.

Puoi modificare le opzioni della VM nel file eclipse.ini nella tua cartella eclipse.

Ho trovato che (in IntelliJ) le impostazioni del garbage collector hanno avuto il maggior effetto sulla velocità di crescita della memoria.

Le mie impostazioni sono:

-Xms128m -Xmx512m -XX:MaxPermSize=120m -XX:MaxGCPauseMillis=10 -XX:MaxHeapFreeRatio=70 -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing 

(Vedi http://piotrga.wordpress.com/2006/12/12/intellij-and-garbage-collection/ per una spiegazione delle singole impostazioni). Come puoi vedere, sono più interessato a evitare lunghe pause durante l’editing rispetto all’utilizzo della memoria attuiale, ma potresti usarlo come punto di partenza.

Non credo che la JVM faccia un sacco di garbage collection a meno che non debba (cioè sta arrivando ai suoi limiti). Quindi afferra tutta la memoria che può ottenere, probabilmente fino al limite impostato in eclipse.ini (l’argomento -Xmx, impostato qui su 512MiB).

È ansible ottenere una rappresentazione visiva dello stato dell’heap corrente selezionando “Preferenze” -> “Generale” -> “Mostra stato heap”. Creerà un piccolo indicatore nella barra di stato che ha anche un pulsante ‘cestino’ che puoi usare per triggersre una garbage collection manuale.

Solo per informazione,

  • Puoi aggiungere

    -Dcom.sun.management.jmxremote

al file eclise.ini, avviare eclipse e quindi monitorare l’utilizzo della memoria attraverso ‘jconsole.exe’ trovato nella propria installazione jdk.

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

Scegli ‘Connessione / Nuova connessione /’ eclipse ‘per monitorare la memoria utilizzata da Eclipse

  • usa sempre l’ultima jvm per lanciare la tua eclipse (che non ti impedisce di usare altri jfk per compilare il tuo progetto all’interno di eclipse)

I plug-in Java EE di Ganymede sono assolutamente enormi durante l’esecuzione in memoria. Inoltre, ho avuto brutte esperienze con FindBugs e la sua affidabilità in una lunga sessione di codifica.

Se non puoi vivere senza questi plugin, allora la tua unica possibilità è iniziare a chiudere i progetti. Se limiti il ​​numero di progetti aperti nel tuo spazio di lavoro, il compilatore (e FindBugs) avrà meno preoccupazioni e l’utilizzo della memoria diminuirà enormemente.

Di solito divido le mie aree di lavoro per cliente e quindi mantengo solo i progetti minimi aperti in ogni area di lavoro. Nota che se hai progetti particolarmente grandi (specialmente quelli con molti file controllati da WST), ciò non solo masticherà la tua memoria, ma causerà anche una pausa sensibile nella reattività durante la compilazione.

Eclipse di per sé è piuttosto gonfio, e più plug-in si aggiungono esacerba solo la situazione. È ancora il mio IDE preferito, perché sicuramente non è a corto di funzionalità, ma se stai cercando un IDE leggero, allora suggerirei di abbandonare Eclipse; è abbastanza normale eseguire un mezzo giro di memoria se si lascia in esecuzione per un po ‘.

Eclipse è un IDE piuttosto gonfio. Puoi ridurlo al minimo girando la costruzione automatica del progetto in Project -> Build Automatically. Può anche essere aiutato chiudendo qualsiasi progetto aperto al quale non stai lavorando al momento.

Lo chiamerei gonfio, ma non perde. (Se perdeva saliva e si arrampicava fino a quando qualcosa si è schiantato.) Come altri hanno già detto, la memoria è a buon mercato! Mi sembra una decisione semplice: spendere un po ‘di più sulla memoria e perdere la produttività perché non hai il budget di memoria per eseguire Eclipse @ 500 MB.

Domanda retorica riassunta: ciò che è più prezioso:

  1. La produttività ottenuta dall’uso di un IDE che conosci con i plug-in che desideri o
  2. Spendendo $ 50-200 su un po ‘di memoria?

La RAM è relativamente economica (non che questa sia una scusa per una scarsa gestione della memoria). La memoria non utilizzata è essenzialmente una memoria WASTED. Se stai colpendo i limiti e l’IDE è il problema, considera meno il multitasking, aggiustando le tue richieste di memoria o acquistane di più. Non vorrei storpiare Eclipse se questo è il tuo IDE pane-e-burro.

Invece di lamentarsi della quantità di memoria utilizzata da Eclipse, basta andare avanti e analizzare dove si trova il problema. Potrei essere solo un plugin.

Controlla il blog qui: “analizzando il consumo di memoria di eclipse”

Saluti, Markus

Ho avuto problemi con il consumo di memoria dei programmi basati su java. Ho scoperto che potrebbe essere correlato al jvm scelto (nel mio caso lo era). Prova ad eseguire eclipse con -client switch.

In alcuni sistemi operativi (credo nella maggior parte delle distro di Linux), l’opzione predefinita è server vm, che consumerà più memoria durante l’esecuzione di applicazioni con gui.

Nel mio caso l’impronta di memoria iniziale è scesa da 300 MB a 80 MB.

Scusa per il mio schifoso inglese. Spero di aver aiutato.

Tutti i saluti Arkadiusz Jamrocha

Bene, non si specifica su quale piattaforma ciò si verifichi. La gestione della memoria può variare se stai usando Windows XP, Vista, Linux, OS X, …

Di solito, sul mio computer (WinXP con 1 Gb di RAM), Eclipse impiega raramente più di 200 Mb, depurando la dimensione dei progetti aperti, i plugin caricati e l’azione in corso.

Di solito concedo a Eclipse 512 MB di RAM (usando l’opzione -Xmx della JVM) e non ho problemi di memoria con Ganimede. Ho aggiornato a due GB di RAM alcuni mesi fa, e posso davvero raccomandarlo. Fa una differenza enorme.

In genere, Eclipse conserva molti metadati in memoria per consentire tutti i tipi di ginnastica IDE.

Ho scoperto che la configurazione di default di Eclipse funziona bene per la maggior parte degli scopi e che include un limite (dato esplicitamente o implicitamente dalla JVM) alla quantità di memoria che può essere consumata, e Eclipse rimarrà all’interno di esso.

C’è qualche ragione particolare per cui sei preoccupato dell’uso della memoria?