Ho diversi processi Java e sto cercando di gestire i dump dell'heap creati quando si verifica l'errore OOM. Quando dico gestisco intendoNome memoria file di heap automatico di memoria esaurita Java
- nome mucchio discarica in modo diverso, in base al processo di origine
- eliminare più vecchio mucchio discariche per risparmiare spazio su disco
Quando scaricate mucchio sul OOM con
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp
la JVM crea un file con il seguente nome java_pidXXXX.hprof nella cartella/tmp specificata (dove XXXX è il PID del processo). È comunque necessario specificare un formato diverso in cui PID e DATE vengono utilizzati per creare il nome del file? Dopo aver cercato su google per un'ora ho provato myPrefix_ $, {pid}, 'data' .. ecc. Le uniche due cose che funzionano sono
-
non
- specificare il nome del file e si ottiene java_pidXXXX.hprof
- specificare un nome di file statico per esempio \ Tmp \ OOM.hprof.
se la cartella \ tmp non esiste, non viene creata, né viene creato il dump dell'heap.
Quello idea che potrebbe usare è quello di aggiungere un comando in caso di errore OOM
-XX:OnOutOfMemoryError="doSomething.sh %p"
ma io cercavo di evitarlo come ho bisogno di distribuire il "doSomething.sh"
Perché hai bisogno della data nel nome? Se si desidera eliminare i file più vecchi, è possibile farlo con l'ora di modifica dei file, non è necessario la data nel nome. – RealSkeptic