Как я должен диагностировать и предотвратить катастрофические отказы JVM?

Сколько контроля Вы имеете над процессом загрузки? Если Вы самокрутка, Вы можете иметь файл, загружаемый движение на временный каталог, или иметь временное имя, пока это не закончило загружать, и затем mv это к корректному имени, когда это сделано. Если Вы используете внешнее программное обеспечение, то Вы не имеете столько же контроля, но Вы все еще могли бы быть в состоянии сделать временную вещь каталога.

6
задан Simon Nickerson 7 December 2009 в 15:50
поделиться

4 ответа

Если сбой происходит только на одной конкретной машине, запустите memtest . Я видел повторяющиеся сбои JVM только два раза, и в обоих случаях виновником была проблема с оборудованием, а именно неисправная RAM.

7
ответ дан 8 December 2019 в 17:22
поделиться

Sun документирует подробности журнала сбоев здесь . Также есть хороший учебник, написанный здесь , если вы хотите вникнуть в грязные детали (хотя звучит так, как будто вы этого не делаете)

Однако, как отметил комментатор, сбой JVM довольно редкое и серьезное событие, и в этой ситуации, возможно, стоит обратиться в службу поддержки Sun или IBM.

2
ответ дан 8 December 2019 в 17:22
поделиться
  1. По моему опыту, они почти всегда вызываются собственным кодом, использующим JNI, моим или чужим. Если можете, попробуйте перезапустить без собственного кода, чтобы посмотреть, сможете ли вы его воспроизвести.

  2. Иногда стоит попробовать с отключенным JIT-компилятором , если ваша ошибка легко воспроизводима.

  3. ] Как отмечали другие, неисправное оборудование также может вызывать это, я видел это как для памяти, так и для видеокарт (когда сбой был в коде поворота). Попробуйте запустить любую диагностику оборудования, наиболее подходящую для вашей системы.

  4. Поскольку сбои JVM случаются редко, я сообщаю о них в Sun. Это можно сделать в их базе данных ошибок . Используйте категорию Java SE, подкатегорию jvm_exact или jit.

  5. В Unix / Linux вы можете получить дамп ядра. Под окнами JVM обычно сообщает вам, где хранится журнал того, что произошло. В этих файлах часто даются подсказки, но они могут отличаться от JVM к JVM. Sun предоставляет полную информацию об этих файлах на своем веб-сайте . или IBM, файлы можно проанализировать с помощью Java Core Analyzer и Java heapdump Analyzer от IBM alphaworks.

  6. К сожалению, отладчики Java, по моему опыту, скорее вредят, чем помогают. Однако подключение отладчика для конкретной ОС (например, Visual Studio) может помочь, если вы знакомы с чтением трассировок стека C.

Трудно получить воспроизводимый тестовый пример. Если у вас большой объем кода, который всегда (или почти всегда) дает сбой, это проще, просто медленно удаляйте части, пока он продолжает сбой, получая результат как можно меньше. Если у вас вообще нет воспроизводимого тестового кода, это очень сложно. Я бы предложил получить подсказки из моей пронумерованной выборки выше.

5
ответ дан 8 December 2019 в 17:22
поделиться

Когда происходит сбой JVM iBM, он мог записать в файл / tmp / dump_locations , в котором перечислены все файлы heapdump или javacore, которые он написал.

Эти файлы можно анализировать с помощью Java Core Analyzer и Java heapdump Analyzer от IBM alphaworks.

0
ответ дан 8 December 2019 в 17:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: