В моей работе мы сталкиваемся с трудностями в воспроизведении проблемы OOM. Или, точнее, его очень легко воспроизвести на одной системе, что делает эту систему непригодной, но трудно воспроизвести где-либо еще, учитывая те же самые входы.
Приложение запускается как служба, используя служебную оболочку. Нам удалось изменить конфигурацию, чтобы запустить его с возможностью вывода файла дампа кучи в OOM, но, к сожалению, они были усечены, скорее всего, из-за тайм-аута оболочки службы и уничтожения процесса, когда он написал файл. Это легко понять, так как максимальная память установлена в 1 ГБ, а файлы hprof имеют размер 700 МБ, что слишком мало, чтобы быть полной кучей в OOM.
Для дополнительной настройки обертки потребуется много переходов, чтобы дать java-процессу больше времени для выписки кучи, но мы преследуем это, используя эти 2 варианта:
wrapper.jvm_exit.timeout=600
wrapper.shutdown.timeout=600
Вопрос в том, есть ли что-нибудь полезное, которое я могу сделать с усеченными файлами hprof, которые у меня есть? Eclipse MAT задыхается от них. Jhat, похоже, загружает их, но затем показывает только 3 экземпляра Java.Object размера 0 и ничего больше. Я попробовал YourKit и не смог записать файл Oids.
Мне кажется, что эти файлы должны иметь в них полезную и доступную информацию. Есть ли инструмент, который может читать что там?
Спасибо за ваше время!