it-swarm-es.com

¿Cómo puedo evitar que Java) cree archivos hsperfdata?

Estoy escribiendo una aplicación Java que se ejecuta en Linux (usando JDK de Sun). Sigue creando /tmp/hsperfdata_username directorios, que me gustaría evitar. ¿Hay alguna forma de evitar que Java) cree estos archivos?

44
c-had

Pruebe la opción JVM - XX: -UsePerfData

más información

Lo siguiente podría ser útil desde el enlace https://docs.Oracle.com/javase/8/docs/technotes/tools/unix/Java.html

-XX:+UsePerfData

    Enables the perfdata feature. This option is enabled by default
    to allow JVM monitoring and performance testing. Disabling it 
    suppresses the creation of the hsperfdata_userid directories. 
    To disable the perfdata feature, specify -XX:-UsePerfData.
32
Kyle Renfro

Use la opción JVM -XX:-UsePerfData.

Esto no tendrá un efecto negativo en el rendimiento, como dicen algunas otras respuestas.

Por defecto, la instrumentación jvmstat está activada en la JVM HotSpot. La opción JVM -XX:-UsePerfData lo apaga. En todo caso, especularía, apagar la instrumentación mejoraría el rendimiento (una cantidad trivial).

Entonces, la desventaja de apagar la instrumentación jvmstat es que pierde la información de monitoreo del rendimiento.

jvmstat se describe aquí http://Java.Sun.com/performance/jvmstat/

Aquí hay un hilo con alguien que está preocupado de que al activar jvmstat - con la opción -XX:+UsePerfData - dañará el rendimiento. http://www.theserverside.com/discussions/thread.tss?thread_id=338
(Probablemente no lo haga, ya que jvmstat está diseñado para estar "'siempre encendido', pero tiene un impacto insignificante en el rendimiento").

31
Jon Stafford

En lugar de apagarlo, cambie la ubicación de Java.io.tmpdir. Agregue -Djava.io.tmpdir =/mydir/somewhere/else/a su Java comando de inicio y luego el archivo estará en algún lugar que usted controle.


Tenga en cuenta un comentario de @simonc: esto solo funciona en algunas versiones de la JVM y ya no es compatible. Ver http://bugs.Sun.com/view_bug.do?bug_id=6447182 , http://bugs.Sun.com/view_bug.do?bug_id=6938627 , http://bugs.Sun.com/view_bug.do?bug_id=7009828 para más información.

4
Mack

Como anexo a la respuesta de Mack (respondida el 25 de marzo de 2011 a las 17:12), la opción Java.tmp.dir ya no parece estar disponible desde Java 8. Vea la información en: https://bugs.Java.com/view_bug.do?bug_id=8189674

Entonces, deshabilitar la opción usando -XX: -UsePerfData parece ser la única opción para no tener archivos hsperfdata_ *.

1
user6494409

También hay "-XX:+PerfDisableSharedMem" opción (recomendada por Sun) que debería causar menos problemas de rendimiento que el uso de "-XX:-UsePerfData" opción.

1
Zweiberg

EDITAR: información de limpieza y resumen

Resumen:

  • Es una característica, no un error
  • Se puede desactivar con -XX: -UsePerfData que podría dañar el rendimiento

Información relevante:

1
svrist

Desde el enlace de svrist:

El primer elemento en http://Java.Sun.com/performance/jvmstat/faq.html menciona una opción que puede desactivar para deshabilitar todo el conjunto de características: -XX: -UsePerfData.

1
Stu Thompson

De acuerdo con informe de error archivado hay una solución alternativa:

Esta opción no documentada deshabilitará la función de perfdatos:
- XX: -UsePerfData

Vale la pena mencionar que es una característica, no un error. La solución anterior simplemente deshabilita la función.

1
SCdF