Je lance mon code Java (1.6.0_16 dans Vista) avec les paramètres suivants (parmi d'autres) -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=../logs
. Je cours le code et je peux voir dans les journaux il y a deux MOO.-XX: + HeapDumpOnOutOfMemoryError ne crée pas de fichier hprof dans OOM
Le premier que je sais parce que je peux voir dans le stdout que le fichier hprof est créé:
java.lang.OutOfMemoryError: Java heap space
Dumping heap to ../logs\java_pid4604.hprof ...
Heap dump file created [37351818 bytes in 1.635 secs]
Et puis, vers la fin du code, je reçois un autre OOM, je capture, mais Je ne reçois pas un deuxième fichier hprof créé. Quelqu'un sait pourquoi c'est ça? Est-ce parce que j'ai capturé l'exception de MOO?
bien je sais sur le conseil de ne pas essayer de récupérer du MOO mais dans ce cas je dois, dois, et dans beaucoup de cas tout fonctionne bien. Mais votre hipothesys sonne bien, peut-être qu'un seul est créé exprès ... En recherchant ce problème, j'ai trouvé une question ici dans stackoverlfow qui a montré comment créer la sauvegarde par programmation, mais ne peut pas le trouver maintenant – Persimmonium