2008-10-22 4 views
4

Что является лучшей практикой для решения аварии Java VM, если условия последующих истинны:Что делать, если Java VM несколько раз сработает?

  • Нет собственной или третьей стороны нативный код. 100% чистый java
  • Такая же программа работает на многих других системах без проблем.

PS: При аварии VM я подразумеваю, что VM записывает файл дампа, такой как hs_err_pid1234.log, и завершает работу.

+0

, который os/platform? (мы знаем, что java не зависит от платформы :-) – Blauohr 2008-10-22 10:56:52

ответ

3

Обновите или замените JVM. Если в настоящее время у вас установлена ​​самая новая версия, попробуйте более старую версию, или если у вас нет последней версии, попробуйте обновить ее. Может быть, это известная проблема в вашей конкретной версии?

4

Ознакомьтесь с файлом hs_err_pid1234.log (или любым другим именем, имеющим имя файла журнала ошибок). Там обычно есть подсказки. Следующий шаг зависит от того, что вы обнаружите в журнале.

Да, это может быть ошибка в конкретной версии реализации JVM, которую вы используете, но я также видел проблемы, вызванные фрагментацией памяти в операционной системе. Например, Windows подвержена подключению DLL в неподходящих местах и ​​не может выделить непрерывный блок памяти, когда JVM запрашивает его в результате. Другие проблемы с памятью opf также могут проявляться через аварийные свалки этого типа.

2

Предполагая версию JVM между машинами то же самое:

Выяснить, что отличается о машине, где виртуальная машина разваливается. То же самое OS и OS версия? У нас есть проблемы с сбоем JVM на конкретную версию Red Hat, например. И мы также обнаружили, что некоторые старые версии Red Hat не могут нормально справляться с дополнительной памятью, что приводит к сокращению пространства подкачки. (Нашим решением было обновление RedHat).

Кроме того, является ли программа точно то же самое через машины? Доступ к общей файловой системе? Установлена ​​ли файловая система аналогично на ваших машинах (SMB/NFS и т. Д.)? Что-то должно быть иначе.

Файл журнала должен дать вам некоторое представление о том, где произошел сбой (например, malloc).

0

Посмотрите на stacktraces в файле дампа, так как он должен рассказать вам, что происходит, когда произошел сбой.

Как и выкапывание в файл дампа hs_err, я также отправлю его Sun или любому, кто сделал вашу JVM (я считаю, что есть инструкции, как это сделать в верхней части файла?). Это не может повредить.

0

32bit? 64bit? Количество бара в клиентской машине? процессор? Операционные системы? Посмотрите, существует ли какая-либо связь между системами. Соединение может привести к пониманию. Если все остальное не удается, рассмотрите возможность использования различных основных/младших версий JVM. Кроме того, если проблема JUST началась, вы можете добраться до времени (через контроль версий), где программа не сработала? Просмотрите журнал hs_err, вы можете получить представление о том, что вызвало крах. Это может быть версия некоторой другой клиентской библиотеки, которую использует JVM. Наконец, запустите программу в debug/profile и, возможно, вы увидите некоторые симптомы перед сбоем (при условии, что вы можете ее дублировать)

 Смежные вопросы

  • Нет связанных вопросов^_^