java jboss jboss7.x java-6 jvm-hotspot

java - No se pudo crear el volcado del montón debido a que ReadVirtual falló



jboss jboss7.x (2)

Hmm, encontré la respuesta en otro sitio web y parece que funciona. Ahora estamos pidiendo a la JVM que haga un volcado de pila cuando encuentra un OutOfMemoryError con las siguientes opciones:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./java_pid<pid>.hprof

Como se encuentra en:

http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

Tenemos un servidor de aplicaciones JBoss ejecutándose en Java 6 actualización 45. Nos estamos encontrando con OutOfMemoryErrors que probablemente nos hayamos presentado nosotros mismos. Nos gustaría analizar esos y queremos crear un volcado de pila. Esto falla con la excepción a continuación.

Buscar en Google y buscar Stackoverflow no me ha ayudado mucho, ¿alguien tiene una idea sobre cómo obtener un volcado dinámico de esta máquina?

¡Gracias!

Martín

La excepción es:

C:/>"d:/Program Files/Java/bin/"jmap -F "-dump:format=b,file=D:/heapdumps/20130620_085902_heap.dump" 1832 Attaching to process ID 1832, please wait... Debugger attached successfully. Server compiler detected. JVM version is 20.45-b01 Dumping heap to D:/heapdumps/20130620_085902_heap.dump ... Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.tools.jmap.JMap.runTool(JMap.java:179) at sun.tools.jmap.JMap.main(JMap.java:110) Caused by: sun.jvm.hotspot.debugger.DebuggerException: Windbg Error: ReadVirtual failed! at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.readBytesFromProcess0(Native Method) at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.readBytesFromProcess(WindbgDebuggerLocal.java:485) at sun.jvm.hotspot.debugger.DebuggerBase$Fetcher.fetchPage(DebuggerBase.java:76) at sun.jvm.hotspot.debugger.PageCache.getPage(PageCache.java:178) at sun.jvm.hotspot.debugger.PageCache.getInt(PageCache.java:96) at sun.jvm.hotspot.debugger.DebuggerBase.readCInteger(DebuggerBase.java:355) at sun.jvm.hotspot.debugger.DebuggerBase.readCompOopAddressValue(DebuggerBase.java:459) at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.readCompOopHandle(WindbgDebuggerLocal.java:332) at sun.jvm.hotspot.debugger.windbg.WindbgAddress.getCompOopHandleAt(WindbgAddress.java:122) at sun.jvm.hotspot.oops.Oop.getKlassForOopHandle(Oop.java:235) at sun.jvm.hotspot.oops.ObjectHeap.newOop(ObjectHeap.java:378) at sun.jvm.hotspot.oops.ObjectHeap.iterateLiveRegions(ObjectHeap.java:464) at sun.jvm.hotspot.oops.ObjectHeap.iterate(ObjectHeap.java:249) at sun.jvm.hotspot.utilities.AbstractHeapGraphWriter.write(AbstractHeapGraphWriter.java:51) at sun.jvm.hotspot.utilities.HeapHprofBinWriter.write(HeapHprofBinWriter.java:416) at sun.jvm.hotspot.tools.HeapDumper.run(HeapDumper.java:56) at sun.jvm.hotspot.tools.Tool.start(Tool.java:221) at sun.jvm.hotspot.tools.HeapDumper.main(HeapDumper.java:77) ... 6 more


Por favor revise los puntos a continuación,

  1. Ejecute la consola de comandos como administrador
  2. la versión de JDK (para el comando jmap) y JRE (entorno de ejecución de la aplicación Java) debe ser la misma.
  3. Si tiene una excepción con JDK / JRE 7, haga lo mismo con JDK / JRE 8

En realidad, me enfrenté a un problema en jmap con JDK 7, pero cuando me mudé a JDK 8, pude generar con éxito el volcado de heap usando el comando below

jmap -dump: file = d: / heapdump / myHeapDump.hprof -F