2010-03-09 3 views
5

J'utilise ASANT pour exécuter un fichier xml qui pointe vers un fichier NARS.jar. Je reçois "java.lang.OutOfMemoryError: Java heap space" et je fais des recherches à ce sujet.Où trouver le vidage de tas après un "Mémoire insuffisante"

J'ai donc trouvé que je devais définir "-XX: + HeapDumpOnOutOfMemoryError", pour créer un fichier de vidage à analyser.

J'ai effectué ASANT.bat et a ajouté le "-XX: + HeapDumpOnOutOfMemoryError" à 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%" 

Mais je ne peux pas sembler trouver un fichier de vidage. Je vais utiliser l'analyseur de mémoire Eclipse pour analyser quand je trouve le vidage.

J'ai également essayé de définir l'option "-XX: HeapDumpPath = c: \ memdump \ bds.hprof", mais aucun vidage n'y a été créé.

Quelqu'un at-il une idée de ce que je fais de mal? Merci d'avance

+0

en cours java 5 BTW – Ikky

+0

sons comme des détails supplémentaires sont nécessaires sur * qui * processus est d'avoir le problème. – Pat

Répondre

1

J'ai trouvé que je pouvais utiliser VisualVM de SUN pour obtenir un tas de mémoire, et le voir en direct.

solution facile

-1

Umm ... que diriez-vous de java.io.tmpdir?

1

Il est dans le répertoire de travail de l'application (à savoir où vous avez commencé). Je ne suis pas sûr de ce qui se passe si le processus n'a pas les privilèges nécessaires pour le faire. Probablement, l'écriture de la décharge échouerait silencieusement.

1

êtes-vous sûr que ANT est le processus avec l'OOME? Ce peut être un processus commencé par ANT.

Ajoutez "-debug" à ANT_OPTS pour les informations de débogage.

Voyez-vous les cibles imprimées pendant l'exécution?

Vous pouvez également bifurquer les différents processus lancés par la fourmi (va ralentir les choses, mais peut aider à isoler le coupable)

Enfin, peut-être vous avez juste besoin de plus de mémoire que la valeur par défaut. Ajouter:

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

aux ANT_OPTS

+0

Merci pour les bonnes suggestions, mais aucun d'eux n'a aidé. J'ai également essayé de définir fork = "yes" dans le fichier xml, mais cela n'a pas aidé. – Ikky

Questions connexes