Si se da cuenta de cómo depurar jvm que se bloquea en la estación de trabajo de su computadora, con suerte este artículo puede ayudarlo a solucionarlo.
Aprobado: Fortect
Estaba muy confundido y no sé cómo asegurarme de que te acerques y resuelvas mi problema individual. Tengo un fragmento de código Java simple que hace que la JVM se bloquee:
## El tiempo de ejecución de Java encontró un error fatal:## SIGSEGV (0xb) en la ayuda de la computadora = 0x00000001057ce9d4, pid = 10727, tid significa 18947## Plan JRE: Java SE Runtime Environment (tm) (8.0_73-b02) (compilación 1.8.0_73-b02)# Máquina virtual Java: Máquina virtual Java de 64 bits del servidor HotSpot (TM) (25.73-b02, modo mixto, bsd-amd64, plegado oh)# Marco en V problemático:# [libjvm.dylib + 0x3ce9d4] PhaseIdealLoop :: idom_no_update (nodo *) const + 0x12## No se pudo escribir el volcado de memoria. Los repositorios base son incapaces. Para habilitar la desinstalación del kernel, intente ulimit -c incalculable antes de reiniciar Java.## Si desea que pueda sugerir un informe de error, visite:# Http://bugreport.java.com/bugreport/crash.jsp#--------------- EL ALAMBRE ---------------Subproceso actual (0x00007feeef003800): demonio JavaThread "C2 CompilerThread0" [_thread_in_native, id = 18947, stack (0x0000700000ec4000,0x0000700000fc4000)]siginfo: si_signo: 23 (SIGSEGV), si_code: 1 Si_addr: (segv_maperr), 0x00000000000000008
No tengo idea de cómo resolver el dilema. El programa es bastante simple, recibe un gran mensaje de Kafka además de algunas de las tareas de activación basadas en mensajes. Cuando agrego dos necesidades diferentes, cada programa recibe de 900 a 1500 advertencias después de un bloqueo. Todas las publicaciones son exactamente similares y el programa no usa ningún material JNI de reemplazo (las colecciones de terceros utilizadas potencialmente no usan JNI como me informaron).
Seguramente nunca he tenido este problema de sufrimiento, pero es posible que me guste / tenga que hacerlo. Esta es su manera de averiguar cuál es el problema. Mantengo que ya usé las segundas versiones de JVM (Java 8.0_66, 8.0_73-b02 combinado con 8.0_74-b02). ¿Entonces Que puedo hacer? Gracias !
entonces ...# Versión de JRE: Java OS runtime (tm) (8.0_73-b02) (compilación 1.8.0_73-b02)# Máquina virtual Java: Máquina virtual Java de 64 bits del servidor HotSpot (TM) (25.73-b02, modo mixto, bsd-amd64, oh compactado)# Marco en V problemático:# [libjvm.dylib + 0x3ce9d4]...
EDITAR (2): He actualizado mi versión de Java a 8.0_74. De hecho, el error sigue ahí :(.
Aprobado: Fortect
Fortect es la herramienta de reparación de PC más popular y eficaz del mundo. Millones de personas confían en él para mantener sus sistemas funcionando de forma rápida, fluida y sin errores. Con su sencilla interfaz de usuario y su potente motor de análisis, Fortect encuentra y soluciona rápidamente una amplia variedad de problemas de Windows, desde la inestabilidad del sistema y los problemas de seguridad hasta la gestión de la memoria y los cuellos de botella en el rendimiento.
## El tiempo de ejecución de Java encontró un error fatal:## SIGSEGV (0xb) en pc = 0x00000001073cdef8, pid es igual a 11227, tid = 19715## Versión de JRE: reproducción de java OS (tm) (8.0_74-b02) (compilación 1.8.0_74-b02)# VM: Java Java HotSpot (TM) Servidor VM de 64 bits (25.74-b02 Modo mixto bsd-amd64, abreviado oops)# Marco problemático:# V [libjvm. ... ... dylib + 0x3cdef8] PhaseIdealLoop :: idom_no_update (Nodo *) const + 0x12## Error al escribir el volcado del cuerpo. Los volcados de kernel están desactivados. Para ajustar el núcleo, elimine intente ulimit -c unlimited antes de reiniciar Java## Si desea enviar una documentación de error, visite:# Http://bugreport.java.com/bugreport/crash.jsp#--------------- EL ALAMBRE ---------------Línea segura actual (0x00007f89e481c800): demonio JavaThread "C2 CompilerThread1" [_thread_in_native, id equivale a 19715, stack (0x000070000104a000,0x000070000114a000)]siginfo: si_signo: 11 (SIGSEGV), si_code: par de (SEGV_MAPERR), si_addr: 0x000000000000008
Entonces, finalmente descargué el núcleo real de Verizon y lo cargué en Java VisualVM (no pude usar la solución organizada por DROY porque la llamada a jmap resultó en un error agregado: “Error al agregar a la lista principal: no se puede ajustar a core. file “”). VisualVM generó un subproceso con los resultados:
Asunto 30239 "Keep-Alive-Timer": (estado = BLOQUEADO) en java.lang.Thread.Method) sleep (nativo hasta sun.net.www.http.KeepAliveCache.run (KeepAliveCache.java: 172) en java.lang.Thread.run (Thread.java:745)Subproceso 29699 (Estado "threaddeathwatcher-4-1": = BLOQUEADO) para ir a java.lang.Thread.sleep (método nativo) io en.netty.util.ThreadDeathWatcher $ Watcher.run (ThreadDeathWatcher.java:137) posiblemente en io.netty.util.concurrent.DefaultThreadFactory $ DefaultRunnableDecorator.run (DefaultThreadFactory.java:137) acerca de java.lang.Thread.run (Thread.java:745)Flujo 26635 (estado 'nioeventloopgroup-3-1': implica IN_NATIVE) en sun.nio.ch.KQueueArrayWrapper.Method) kevent0 (nativo fuera de sun.nio.ch.KQueueArrayWrapper.poll (KQueueArrayWrapper.java: 198) en sun.nio.ch.KQueueSelectorImpl.doSelect (KQueueSelectorImpl.java:117) con sun.nio.ch.SelectorImpl.lockAndDoSelect (SelectorImpl.java:86) - <0x00000006c049ec98> Io fijo (a.netty.channel.nio. Selectedselectionkeyset) - seguro <0x00000006c049ec88> (java.util.Collections $ UnmodifiableSet) 2.bloqueado <0x00000006c049ecb8> (un sun.nio.ch.KQueueSelectorImpl) En sun.nio.ch.SelectorImpl.select (SelectorImpl.java:97) disponible usando io.netty.channel.nio.NioEventLoop.select (NioEventLoop.java:622) en io.netty.channel.nio.NioEventLoop.run (NioEventLoop.java:310) en io.netty.util.concurrent.SingleThreadEventExecutor $ 2.run (SingleThreadEventExecutor.java:110) solo con io.netty.util.concurrent.DefaultThreadFactory $ DefaultRunnableDecorator.run (DefaultThreadFactory.java:137) encontrado en java.lang.Thread.run (Thread.java:745)Subproceso 29187 "pool-3-thread-1": (estado = BLOQUEADO) usando sun.misc.Unsafe.park (método nativo) Granos de café en.util.concurrent.locks.LockSupport.park (LockSupport. Java: 175) preocupaciones java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.await (AbstractQueuedSynchronizer.java:2039) capuccino en.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442) kafka en.consumer.ConsumerIterator.makeNext (ConsumerIterator.scala: 63) dentro de kafka.consumer.ConsumerIterator.makeNext (ConsumerIterator.scala: 33) en kafka.utils.IteratorTemplate.maybeComputeNext (IteratorTemplate.scala: 66) en kafka.utils.IteratorTemplate.hasNext (IteratorTemplate.scala: 58) dentro de at.sosse.common.messaging.DefaultHandler.doRun (DefaultHandler.java:22) autor: com.sosse.common.concurrency.DefaultRunnable.run (DefaultRunnable.java:11) en java.util.concurrent.Executors $ RunnableAdapter.call (Executors. java: 511) en java.util.concurrent.FutureTask.run (FutureTask.java:266) Café gourmet en.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. Java: 1142) en java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) en java.lang.Thread.run (Thread.java:745)Subproceso 28675 "pool-4-thread-1": (estado, emergencia BLOQUEADO) a través de java.lang.Thread.sleep (método nativo) io en.netty.util.HashedWheelTimer $ Worker.waitForNextTick (HashedWheelTimer.java:461) en io.netty.util.HashedWheelTimer $ Worker.run (HashedWheelTimer. java: 360) a través de java.lang.Thread.run (Thread.java:745)Tema 28163 "ConsumerFetcherThread-analytics-group_Philipp.local-1458441725398-581eabc3-0-0": (el estado corresponde a in_native) alrededor del sun.nio.ch.Net.Methode) poll (nativo de sun.nio.ch.SocketChannelImpl.poll (SocketChannelImpl.java:954) o bloqueado <0x00000006c056d538> (java.lang.Object) en sun.nio.ch.SocketAdaptor $ SocketInputStream.read (SocketAdaptor.java:204) - privado <0x00000006c056d5b8> Java (a.lang.Object) sun.nio.ch.ChannelInputStream.read (ChannelInputStream.java:103) - <0x00000006c056d5f8> fijo (sun.nio.ch.SocketAdaptor $ SocketInputStream) En java.nio.channels.Channels $ ReadableByteChannelImpl.read (Channels.java:385) - equipado (<0x00000006c056d618> java.lang.Object) Bajo kafka.utils.Utils bucks .read (Utils.scala: 380) kafka en.network.BoundedByteBufferReceive.readFrom (BoundedByteBufferReceive.scala: 54) kafka en.network.Receive rr class.readCompletely (Transmission.scala: 56) solo que tiene kafka.network.BoundedByteBufferReceive.readCompletely (BoundedByteBufferReceive.scala: 29) kafka en.network.BlockingChannel.receive (BlockingChannel.scala: 111) kafka at.consumer.SimpleConsumer.liftedTree1? rrr 1 (Consumidor simple escala: 71) Bajo kafka.consumer.SimpleConsumer.kafka dólar consumidor $ SimpleConsumer $$ sendRequest (SimpleConsumer.scala: 68) - seguro <0x00000006c056d6e0> (java.lang.Object) En kafka.consumer.SimpleConsu
Acelere el rendimiento de su computadora ahora con esta simple descarga.
Compruebe el archivo de texto del fallo. El archivo con el guardabarros de la carta. dump puede mostrar qué asignaciones de conocimiento han fallado.Verifique el tamaño del binario fallido. Cuando una JRockit JVM en particular falla, comprenda que genera cualquier binario de falla (.core también.
Cualquiera que sea el diagnóstico de hardware que sea más útil para su preciado sistema, dele una muestra. Dado que las caídas de JVM son raras, las registraría en Sun. Esto se puede hacer mucho más en su sistema de seguimiento de errores. Utilice la subcategoría Ding Java SE, jvm_exact o jit.
Abra / bin / run. baseball bat en Windows y /bin/run.sh en Linux disponibles para editar. Para ocultar los informes del registro de fallos de JVM, comente la línea correspondiente para indicar dónde se analiza el fallo de JVM. Ejemplo: #ERROR_FILE = "- XX: ErrorFile = $ PA_HOME / log / java_error% p.