2008-09-26 4 views
27

Когда Java VM сбой с EXCEPTION_ACCESS_VIOLATION и создает файл hs_err_pidXXX.log, что это значит? Сама по себе ошибка в основном исключение нулевого указателя. Всегда ли это вызвано ошибкой в ​​JVM, или есть другие причины, такие как неисправность аппаратных или программных конфликтов?Возможные причины Java VM EXCEPTION_ACCESS_VIOLATION?

Редактировать: есть собственный компонент, это приложение SWT на win32.

+1

Выполняете ли вы что-нибудь с использованием собственного кода, например Java3D или что-то в этом роде? – 2008-09-26 15:12:35

ответ

14

Большая часть времени это ошибка в виртуальной машине. Но это может быть вызвано любым нативным кодом (например, вызовы JNI).

Файл hs_err_pidXXX.log должен содержать некоторую информацию о том, где возникла проблема.

Вы также можете проверить раздел «Куча» внутри файла. Многие ошибки VM вызваны сбором мусора (особенно в старых VM). Этот раздел должен показать вам, был ли мусор запущен во время сбоя. Также в этом разделе показано, заполнены ли некоторые части кучи (процентные числа).

VM также с большей вероятностью столкнется в ситуации с низкой памятью, чем в противном случае.

+0

Как проверить, работал ли сборщик мусора во время сбоя? – 2016-01-18 07:21:12

1

Первое, что вам нужно сделать - это модернизировать вашу JVM до последней возможности.

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

В нижней строке, JVM никогда не должен терпеть крах, поскольку упомянутый выше плакат, если вы не делаете JNI, тогда моя внутренняя проблема в том, что у вас есть проблема с оборудованием.

+0

Не могли бы вы описать, какая именно проблема? Я борюсь с такой ошибкой и думаю о том, как проблемы HW могут быть обнаружены. – 2010-03-03 12:30:31

+0

Один из способов обнаружения аппаратных проблем - просмотр окна просмотра событий. Существует большое изменение, о котором будут сообщаться аппаратные проблемы. – frewper 2012-12-28 06:09:40

1

Причина проблемы будет задокументирована в файле hs_err *, если вы знаете, что искать. Взгляните, и если это еще не ясно, подумайте о публикации первых 5 или 10 строк трассировки стека и другой соответствующей информации (не публикуйте все это, есть тонны информации, которые не помогут - но вы должны выяснить, какой из них 1 important :-))

0

Используете ли вы виджет обозревателя и выполняете javascript в виджетах браузера? Если это так, то в некоторых версиях SWT есть ошибки, которые приводят к сбою JVM в собственном коде в различных библиотеках Windows.

Два примера (которые я открыл): bug 217306 и bug 127960. Однако эти два отчета об ошибках не являются единственными сообщениями об ошибках JVM-сбоев в SWT.

Если вы не используете виджет браузера, то эти предложения вам не помогут. В этом случае вы можете найти список из SWT bugs causing a JVM crash. Если ни одна из них не является вашей проблемой, я настоятельно рекомендую вам открыть отчет об ошибке с помощью SWT.

3

Ответ найденный!

У меня была такая ошибка, и я заметил, что другие пользователи, предоставившие содержимое файла журнала pid, запускали 64-битную Windows. Прямо как я. В конце файла журнала он включал инструкцию PATH. Там я мог видеть, что C: \ Windows \ SysWOW64 был неправильно указан:% SystemRoot% \ system32. Исправив это, исключение исчезло.

0

У меня такая же проблема с приложением JNLP, которое я использую в течение длительного времени и довольно надежным. Проблема началась сразу после обновления с Windows 7 до Windows 10.Согласно моему расследованию, это, скорее всего, ошибка в Win 10.

Ниже приведено не решение, а уродливое обходное решение. В каталоге jre/bin есть javaws.exe. Если I щелкнул правой кнопкой мыши/Свойства/Совместимость и пометили Запуск этой программы в качестве администратора, приложение JNLP начало работать.

Пожалуйста, имейте в виду, что такой подход может вызвать проблемы с безопасностью и использовать его только в том случае, если у вас нет другой опции, и 100% знают, что вы делаете.