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?
Essayez l'option JVM - XX: -UsePerfData
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.
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
.
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.
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_ *.
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.
EDIT: informations de nettoyage et résumé
Sommaire:
Informations pertinentes:
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.
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é.