Bueno, esto es embarazoso …

Estoy empezando a jugar con el Eclipse de la Memoria del Analizador de mirar para Java pérdidas de memoria en una caja de Windows. El paso 1 es obtener un montón de archivo de volcado. Para ello empiezo mi Java (javaw.exe proceso desde dentro de Eclipse y conectarse a él con jconsole. A continuación, en el jconsole MBeans ficha haga clic en el dumpHeap botón. La primera vez que hice esto, yo vi un pop-up diciendo que había creado el montón archivo de volcado, pero no dar su nombre o ubicación. Ahora cada vez que hago un dumpHeap de nuevo mientras está conectado a una diferente javaw.exe proceso, jconsole dice:

Problem invoking dumpHeap : java.io.IOException: File exists

y por supuesto no dar su nombre o ruta de acceso. Donde podría ser?

He buscado en mi unidad C: (usando cygwin herramientas de línea de comandos) para los archivos que contienen «hprof» o «java_pid» o «heapdump» y no encontrar nada plausible. Incluso he usado la búsqueda de Windows para buscar todos los archivos en mi espacio de trabajo de Eclipse que han cambiado en el último día.

Estoy usando el Java de Sun JVM 1.6, y no tienen-XX:HeapDumpPath conjunto.

Actualización (28 de abril de 2010): original de Mi montón de ubicación del archivo debe haber sido determinado por jconsole, la herramienta me provocó el volcado del montón. La JVM montón de volcado de ubicación debe aplicar sólo a los del montón vuelca desencadenantes (por ejemplo, en un OutOfMemoryException).

Matt B sugerencia de uso jvisualvm bien soluciona mi problema me apunta a una mucho más útil de reemplazo para el viejo jconsole. Tiene una buena memoria del analizador que muestra los tipos de objetos son más numerosos y tienen más memoria. Y tiene un monitor que muestra real de uso de la memoria a lo largo del tiempo. Al preguntarle un montón de volcado, lo que te dice el nombre de archivo, incluso! El Eclipse de la Memoria del Analizador da todos los detalles.

trate de jvisualvm, se tiene una mejor interfaz
Los IDEs son realmente útiles hasta que no
b: tienes toda la razón, y que incluso me dice que el nombre de archivo de correos volcado del montón! C:\DOCUME~1\ferrans\LOCALS~1\Temp\visualvm.dat\localhost-4180\heapdump-1272470561431.hprof Agregar esto como una respuesta y lo acepto.
B: no Podría estar más de acuerdo. Un IDE es grande mientras que son capaces de trabajar a su nivel, pero cuando algo va mal bajo la cubre …

OriginalEl autor Jim Ferrans | 2010-04-28

5 Comentarios

  1. 8

    Intentar jvisualvm, se tiene una mejor interfaz.

    Nota que a partir del JDK versión 6 update 7 o mayor, Java VisualVM viene con el JDK. Ver aquí.

    Gracias, ya esta resuelto mi problema y me enseñó algo nuevo y muy útil!

    OriginalEl autor matt b

  2. 6

    ¿por qué no establecer el primer parámetro para dumpHeap(String,boolean) cuando intenta invocar dumpHeap() de jconsole? es el generado heapdump ubicación del archivo y nombre de archivo.

    OriginalEl autor tsimgsong

  3. 4

    De acuerdo a la docs para el Sun Java SE6 JVM:

    Por defecto, el volcado del montón se crea en
    un archivo llamado java_pid<pid>.hprof en el
    directorio de trabajo de la máquina virtual

    En Eclipse, el directorio de trabajo se define en los «Argumentos» de la ficha «Ejecutar Configuraciones de diálogo». El valor predeterminado es el mismo directorio que la clase que se está ejecutando.

    Gracias Jason, voy a echar un vistazo a la carrera de diálogo Configuraciones. Yo era incapaz de crear un segundo montón de archivo de volcado de un proceso diferente, que parece contradecir este esquema de nomenclatura.
    Hmm, no había hprof archivo en el directorio actual del proceso. Desde jvisualvm conjuntos de heapdump nombre de archivo en un directorio diferente, supongo que jconsole hace demasiado?

    OriginalEl autor Jason Jenkins

  4. 2

    Siempre se puede usar ProcessMonitor para ver donde se está tratando de escribir a 🙂 de Hecho esto a mí mismo en el pasado.

    Interesantes consejos, voy a darle una oportunidad!

    OriginalEl autor Chris Dennett

  5. 0

    Me encontré con el objeto de dumping archivo en la misma carpeta donde está el .archivo bat que al iniciar mi aplicación java se coloca. (Yo estoy usando windows 8.1, java 7)
    En mi caso, jboss, /jboss-as/bin/carpeta.
    Para encontrar lo que he buscado en * los archivos, con el día de hoy la fecha de creación y de más de 200MB.

    OriginalEl autor Francesco

Dejar respuesta

Please enter your comment!
Please enter your name here