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




В большинстве случаев это ошибка виртуальной машины. Но это может быть вызвано любым собственным кодом (например, вызовами JNI).
Файл hs_err_pidXXX.log должен содержать некоторую информацию о том, где возникла проблема.
Вы также можете проверить раздел «Куча» внутри файла. Многие ошибки виртуальных машин вызваны сборкой мусора (особенно в старых виртуальных машинах). Этот раздел должен показать вам, выполнялся ли мусор во время сбоя. Также этот раздел показывает, заполнены ли некоторые разделы кучи (процентные числа).
Кроме того, виртуальная машина с гораздо большей вероятностью выйдет из строя из-за нехватки памяти, чем в противном случае.
Как проверить, работал ли сборщик мусора во время сбоя?
Первое, что вам нужно сделать, это обновить JVM до последней версии.
Вы можете повторить вопрос? Или это как будто случайно происходит? Недавно у нас возникла проблема, из-за которой наша JVM зависала повсюду и в случайное время. Оказывается, это проблема с оборудованием. Мы вставили диски в новый сервер, и он полностью ушел.
В итоге, JVM никогда не должна давать сбой, как упоминалось выше, если вы не выполняете никакого JNI, то мне кажется, что у вас проблема с оборудованием.
Не могли бы вы описать, в чем именно заключалась проблема? Я борюсь с такой ошибкой и думаю, как можно обнаружить проблемы с HW.
Один из способов обнаружить проблемы с оборудованием - это просмотреть «средство просмотра событий» в окнах. Значительно изменится то, что там будут сообщаться о проблемах с оборудованием.
Причина проблемы будет задокументирована в файле 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, и исправление ее устранило проблему.
У меня такая же проблема с приложением JNLP, которое я использую долгое время и которое довольно надежно. Проблема возникла сразу после того, как я обновился с Windows 7 до Windows 10. Согласно моему расследованию, это, скорее всего, ошибка в Win 10.
Следующее - не решение, а уродливый обходной путь. В каталоге jre / bin есть javaws.exe. Если я щелкнул правой кнопкой мыши/ Свойства / Совместимость и поставил галочку Запустите эту программу от имени администратора, приложение JNLP начало работать.
Имейте в виду, что этот подход может вызвать проблемы с безопасностью, и используйте его только в том случае, если у вас нет другого варианта и вы на 100% знаете, что делаете.
Вы делаете что-нибудь, связанное с собственным кодом, например Java3D или что-то в этом роде?