Подтвердить что ты не робот

Возможные причины Java VM EXCEPTION_ACCESS_VIOLATION?

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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

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

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

Ответ 7

Я получал похожую виртуальную машину EXCEPTION_ACCESS_VIOLATION, когда метод вызывал System.exit().

Выполнение выхода из основного приложения с помощью Platform.exit() вместо этого, похоже, исправило его.