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

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

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

Вы делаете что-нибудь, связанное с собственным кодом, например Java3D или что-то в этом роде?

Michael Myers 26.09.2008 19:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
37
1
83 021
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

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

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

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

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

Как проверить, работал ли сборщик мусора во время сбоя?

Dattatreya Kugve 18.01.2016 10:21

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

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

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

Не могли бы вы описать, в чем именно заключалась проблема? Я борюсь с такой ошибкой и думаю, как можно обнаружить проблемы с HW.

andrii 03.03.2010 15:30

Один из способов обнаружить проблемы с оборудованием - это просмотреть «средство просмотра событий» в окнах. Значительно изменится то, что там будут сообщаться о проблемах с оборудованием.

frewper 28.12.2012 10:09

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

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

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

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

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

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

Большое спасибо! Оказалось, что у меня тоже была неправильная запись в моей переменной PATH, и исправление ее устранило проблему.

Meghan 08.06.2017 19:50

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

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

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

Другие вопросы по теме