web-dev-qa-db-fra.com

Comment puis-je empêcher Java de créer des fichiers hsperfdata?

J'écris une Java qui s'exécute sur Linux (en utilisant le JDK de Sun). Elle continue de créer /tmp/hsperfdata_username répertoires, que j'aimerais éviter. Existe-t-il un moyen d'empêcher Java de créer ces fichiers?

44
c-had

Essayez l'option JVM - XX: -UsePerfData

plus d'informations

Les informations suivantes peuvent être utiles, tirées du lien 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

Utilisez l'option JVM -XX:-UsePerfData.

Cela n'aura pas d'effet négatif sur les performances, comme le disent d'autres réponses.

Par défaut, l'instrumentation jvmstat est activée dans la machine virtuelle Java HotSpot. L'option JVM -XX:-UsePerfData le désactive. Si quoi que ce soit, je spéculerais, éteindre l'instrumentation améliorerait les performances (un montant trivial).

Ainsi, l'inconvénient de désactiver l'instrumentation jvmstat est que vous perdez les informations de surveillance des performances.

jvmstat est décrit ici http://Java.Sun.com/performance/jvmstat/

Voici un fil de discussion avec quelqu'un qui craint qu'en activant jvmstat - avec l'option -XX:+UsePerfData - nuira aux performances. http://www.theserverside.com/discussions/thread.tss?thread_id=338
.

31
Jon Stafford

Plutôt que de le désactiver, modifiez l'emplacement Java.io.tmpdir. Ajoutez -Djava.io.tmpdir =/mydir/quelque part/else/à votre commande de démarrage Java et le fichier sera alors quelque part que vous contrôlez.


Notez un commentaire de @simonc: cela ne fonctionne que dans quelques versions de la JVM et n'est plus supporté. Voir 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 pour plus d'informations.

4
Mack

En complément de la réponse de Mack (répondu le 25 mars 2011 à 17h12), l'option Java.tmp.dir ne semble plus disponible depuis Java 8. Voir les informations sur: https://bugs.Java.com/view_bug.do?bug_id=8189674

La désactivation de l'option à l'aide de -XX: -UsePerfData semble donc la seule option à ne pas avoir de fichiers hsperfdata_ *.

1
user6494409

Il y a aussi "-XX:+PerfDisableSharedMem" option (recommandée par Sun) qui devrait entraîner moins de problèmes de performances que l'utilisation de "-XX:-UsePerfData" option.

1
Zweiberg

EDIT: informations de nettoyage et résumé

Sommaire:

  • C'est une fonctionnalité, pas un bug
  • Il peut être désactivé avec -XX: -UsePerfData, ce qui pourrait nuire aux performances

Informations pertinentes:

1
svrist

Du lien de svrist:

Le premier élément de http://Java.Sun.com/performance/jvmstat/faq.html mentionne une option que vous pouvez désactiver pour désactiver toute la suite de fonctionnalités: -XX: -UsePerfData.

1
Stu Thompson

Selon le rapport de bogue déposé il existe une solution:

Cette option non documentée désactivera la fonction perfdata:
- XX: -UsePerfData

Il convient de mentionner que c'est une fonctionnalité, pas un bug. La solution de contournement ci-dessus désactive simplement la fonctionnalité.

1
SCdF