Как се създава файлът за дъмп на Heap след срив на JVM

Когато JVM се срине, в работната директория се създава файл с дъмп на Heap (hs_err_pidXXXX.log). Искам да знам кой създава този файл. JVM се срина означава, че е прекратено необичайно. Така че определено няма да създаде този файл. И така, как се създава този файл?

Също така можем да контролираме информацията, показвана в този файл. Ако искам да има дъмп на нишка и дъмп на купчина заедно в един файл (hs_err_pidXXXX.log), възможно ли е? Ако да как? По принцип моят приоритет е да идентифицирам функцията (или stacktrace), която е причинила срива на JVM, и да я съхраня в създадения дъмп файл на Heap.


person Aniket Thakur    schedule 30.08.2013    source източник
comment
Определено няма да създаде този файл. Определено грешите за това.   -  person user207421    schedule 30.08.2013


Отговори (2)


Много операционни системи позволяват процесът да регистрира манипулатор за определени изключителни условия. Например в UNIX има концепцията за сигнали.

Така че е възможно самата JVM да записва дневника.

person Henry    schedule 30.08.2013
comment
така че това подобно ли е на 'java shutdown hook', който можем да използваме за обработка на сигнали? - person Ankur Shanbhag; 30.08.2013
comment
@Ankur да, подобно, но на по-дълбоко ниво. - person Henry; 30.08.2013

Вече получавате дъмп на купчина при срив. За да получите дъмп на нишка в допълнение, използвайте следния JVM аргумент

 -XX:OnOutOfMemoryError="kill -3 %p"

Забележка: Това обаче най-вероятно ще създаде дъмп на нишката в различен файл или конзола.

person Anurag Kapur    schedule 30.08.2013