Domanda

Ricevo questo errore quando eseguo o eseguo il debug di GA / AI da MyEclipse:

Eccezione nel thread "main" java.lang.OutOfMemoryError: spazio heap Java

eclipse.ini è simile al seguente:

-showsplash com.genuitec.myeclipse.product
--launcher.XXMaxPermSize 256m
-vmargs
-Xms128m
-Xmx512m
-Duser.language=en 
-XX:PermSize=128M 
-XX:MaxPermSize=256M

MyEclipse si chiama così:

"C:\Program Files\MyEclipse 6.0\eclipse\eclipse.exe" -vm "C:\Program Files\MyEclipse 6.0\jre\bin\javaw.exe"  -vmargs -Xms1448M -Xmx1448M

aumentando le impostazioni di VM da questo:

"C:\Program Files\MyEclipse 6.0\eclipse\eclipse.exe" -vm "C:\Program Files\MyEclipse 6.0\jre\bin\javaw.exe"  -vmargs -Xms80M -Xmx1024M

non ha avuto effetto. Quindi sto cercando di scaricarlo per scaricare l'heap in un file, ma inserendo questi:

-XX:+HeapDumpOnCtrlBreak
-XX:+HeapDumpOnOutOfMemoryError

negli argomenti del Programma non ha avuto effetto. Come faccio a far funzionare qualcosa con più analisi dell'utilizzo della memoria? jstack, ad esempio, non è attualmente disponibile su piattaforme Windows. E l'utilizzo di SendSignal non ha alcun effetto che posso vedere.

una schermata

È stato utile?

Soluzione

Esistono diversi modi per ottenere i dump dell'heap. Eccone alcuni che ho usato:

  1. -XX: + HeapDumpOnOutOfMemoryError dovrebbe scaricarti se colpisci la tua OOM.
  2. Connettiti con VisualVM (gratuito) e usa la sua GUI per forzare un dump dell'heap
  3. Usa uno dei tanti buoni profiler commerciali (JProfiler, YourKit, ...)
  4. Usa jmap (vedi sotto) per forzare un dump da un processo in esecuzione

Se utilizzi Java 6, jmap dovrebbe funzionare su Windows. Questo potrebbe essere utile se vuoi scaricare l'heap e non hai colpito la tua OOM. Usa Task Manager di Windows per trovare il pid della tua app Java e in una console esegui questo:

jmap -dump:format=b,file=c:\heap.bin <pid>

Oltre a VisualVM, Eclipse Memory Analyzer (anche gratuito) può aiutarti ad analizzare cosa mangia tutto lo spazio una volta che hai la discarica.

Altri suggerimenti

-XX: + HeapDumpOnOutOfMemoryError deve essere inserito in " Argomenti VM " non " Argomenti del programma "

È possibile monitorare l'utilizzo della memoria con JConsole.

Il jstat aiuterà anche .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top