Pregunta

Cuando una máquina virtual Java se bloquea con una EXCEPTION_ACCESS_VIOLATION y produce un archivo hs_err_pidXXX.log, ¿qué indica eso? El error en sí mismo es básicamente una excepción de puntero nulo. ¿Siempre es causado por un error en la JVM, o hay otras causas como un mal funcionamiento del hardware o conflictos de software?

Editar: hay un componente nativo, esta es una aplicación SWT en win32.

¿Fue útil?

Solución

La mayoría de las veces esto es un error en la VM. Pero puede ser causado por cualquier código nativo (por ejemplo, llamadas JNI).

El archivo hs_err_pidXXX.log debe contener información sobre dónde ocurrió el problema.

También puede verificar el " Montón " sección dentro del archivo. Muchos de los errores de VM están causados ??por la recolección de basura (especialmente en máquinas virtuales más antiguas). Esta sección debería mostrar si la basura se estaba ejecutando en el momento del bloqueo. También esta sección muestra, si algunas secciones del montón están llenas (los números de porcentaje).

La VM también tiene muchas más probabilidades de bloquearse en una situación de poca memoria que de otra manera.

Otros consejos

¡Respuesta encontrada!

Tuve el mismo error y noté que otras personas que proporcionaron el contenido del archivo de registro pid ejecutaban Windows de 64 bits. Tal como yo. Al final del archivo de registro, incluía la instrucción PATH. Allí pude ver que C: \ Windows \ SysWOW64 aparecía incorrectamente delante de:% SystemRoot% \ system32. Una vez que lo corregí, la excepción desapareció.

Lo primero que debe hacer es actualizar su JVM a la última versión posible.

¿Puedes repetir el problema? ¿O parece que ocurre al azar? Recientemente tuvimos un problema en el que nuestra JVM se estrellaba por todas partes, en momentos aleatorios. Resulta que fue un problema de hardware. Pusimos las unidades en un nuevo servidor y desapareció por completo.

En pocas palabras, la JVM nunca debe bloquearse, como se mencionó en el póster anterior si no está haciendo ninguna JNI, entonces mi instinto es que tiene un problema de hardware.

La causa del problema se documentará en el archivo hs_err *, si sabe qué buscar. Eche un vistazo, y si aún no está claro, considere publicar las primeras 5 o 10 líneas del trazo de la pila y otra información pertinente (no publique todo, hay toneladas de información allí que no ayudarán, pero tienes que averiguar qué 1% es importante :-))

¿Está utilizando un widget del navegador y está ejecutando javascript en el widget del navegador? Si es así, hay errores en algunas versiones de SWT que hacen que la JVM se bloquee en el código nativo, en varias bibliotecas de Windows.

Dos ejemplos (que abrí) son error 217306 y error 127960 . Sin embargo, estos dos informes de errores no son los únicos informes de errores de la falla de JVM en SWT.

Si no está utilizando el widget del navegador, estas sugerencias no lo ayudarán. En ese caso, puede buscar una lista de errores de SWT que causan un accidente de JVM . Si ninguno de esos es su problema, le recomiendo que abra un informe de error con SWT.

Tengo el mismo problema con una aplicación JNLP que he estado usando durante mucho tiempo y es bastante confiable. El problema comenzó inmediatamente después de actualizar Windows 7 a Windows 10. Según mi investigación, es muy probable que sea un error en Win 10.

Lo siguiente no es una solución, sino una solución fea. En el directorio jre / bin, hay javaws.exe . Si hice clic derecho / Propiedades / Compatibilidad y marqué Ejecutar este programa como administrador , la aplicación JNLP comenzó a funcionar.

Tenga en cuenta que este enfoque podría causar problemas de seguridad y úselo solo si no tiene otra opción y sabe al 100% lo que está haciendo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top