Domanda

Sto usando ASANT per eseguire un file xml che punta a un NARS.jar file.

Mi sto "java.lang.OutOfMemoryError:Java heap space" e mi sto occupando di tutto questo.

Così ho scoperto che ho bisogno di impostare "-XX:+HeapDumpOnOutOfMemoryError", per creare un file di dump di analizzare.

Ho modificato ASANT.bat e aggiunse "-XX:+HeapDumpOnOutOfMemoryError" per ANT_OPTS:

set ANT_OPTS= "-XX:+HeapDumpOnOutOfMemoryError" "-Dos.name=Windows_NT" "-Djava.library.path=%AS_INSTALL%\lib;%AS_ICU_LIB%;%AS_NSS%" "-Dcom.sun.aas.installRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceName=server" "-Dcom.sun.aas.configRoot=%AS_CONFIG%" "-Dcom.sun.aas.processLauncher=SE" "-Dderby.root=%AS_DERBY_INSTALL%"  

Ma io non riesco a trovare nessun file di dump.Io uso Eclipse Memory Analyzer analizzare quando trovo il dump.

Ho provato anche a impostare l'opzione "-XX:HeapDumpPath=c:\memdump\bds.hprof", ma nessuna immagine è stata creata.

Qualcuno ha un idea di cosa sto facendo di sbagliato?Grazie in anticipo

È stato utile?

Soluzione

ho scoperto che avrei potuto usare VisualVM da SUN per ottenere un heapDump, e vederla dal vivo.

Soluzione facile

Altri suggerimenti

E 'nella directory di lavoro dell'applicazione (vale a dire dove hai cominciato tu). Non sono sicuro che cosa succede se il processo non ha i privilegi necessari per farlo. Probabilmente, la scrittura la discarica fallirebbe in silenzio.

sei sicuro che la FORMICA è il processo con il OOME ?Può essere un processo iniziato da ANT.

Aggiungere "debug" per il ANT_OPTS per informazioni di debug.

Stai vedendo i loro obiettivi stampato durante l'esecuzione?

È inoltre possibile forcella vari processi avviati da ant ( sarà rallentare le cose, ma può aiutare a isolare il colpevole )

Infine, forse hai solo bisogno di più memoria rispetto al default.Aggiungere:

-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=256m

per il ANT_OPTS

Sembra che la tua applicazione è in esecuzione su Windows. Un percorso di file di Windows ha bisogno di essere fuggito con \. Secondo il vostro esempio, XX: HeapDumpPath dovrebbe essere simile:

-XX:HeapDumpPath=c:\\memdump\\bds.hprof

Oltre a 'XX: + HeapDumpOnOutOfMemoryError' ci sono diversi altre opzioni per catturare heap dump pure.

Umm ... che ne dici ovunque java.io.tmpdir sta puntando?

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