Как я могу запретить Java создавать файлы hsperfdata?
Я пишу Java-приложение, которое работает на Linux (используя Sun JDK). Продолжает создавать /tmp/hsperfdata_username
каталоги, которые я хотел бы предотвратить. Есть ли способ остановить создание этих файлов в Java?
8 ответов
Попробуйте опцию JVM -XX:-UsePerfData
Следующее может быть полезно по ссылке 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.
Используйте опцию JVM -XX:-UsePerfData
,
Это не окажет негативного влияния на производительность, как говорят некоторые другие ответы.
По умолчанию инструментарий jvmstat включен в JVM HotSpot. Опция JVM -XX:-UsePerfData
выключает Во всяком случае, я бы предположил, что отключение контрольно-измерительных приборов улучшит производительность (тривиальная величина).
Таким образом, недостатком отключения инструментария jvmstat является потеря информации о мониторинге производительности.
jvmstat описывается здесь http://java.sun.com/performance/jvmstat/
Вот ветка с кем-то, кто переживает, что включив jvmstat - с опцией -XX:+UsePerfData
- повредит производительности. http://www.theserverside.com/discussions/thread.tss?thread_id=33833
(Вероятно, этого не произойдет, поскольку jvmstat спроектирован так, чтобы он был "всегда включен", но при этом имеет незначительное влияние на производительность ".)
Вместо того, чтобы отключить его, измените местоположение java.io.tmpdir. Добавьте -Djava.io.tmpdir=/mydir/ где-то / еще / к вашей команде запуска Java, и тогда файл будет где-то под вашим контролем.
Обратите внимание на комментарий @simonc: это работает только в нескольких версиях JVM и больше не поддерживается. См. 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 для получения дополнительной информации.
РЕДАКТИРОВАТЬ: Очистить информацию и подвести итоги
Резюме:
- Это особенность, а не ошибка
- Его можно отключить с помощью -XX:-UsePerfData, что может снизить производительность
Соответствующая информация:
В качестве дополнения к ответу Мака (отвечено 25 марта 2011 г. в 17:12) опция java.tmp.dir больше не доступна после Java 8. См. Информацию по адресу: https://bugs.java.com/view_bug.do?bug_id=8189674
Таким образом, отключение опции с помощью -XX:-UsePerfData, кажется, единственная опция, которая не имеет файлов hsperfdata_*.
Существует также "-XX:+PerfDisableSharedMem"
опция (рекомендуется Sun), которая должна вызывать меньше проблем с производительностью, чем использование "-XX:-UsePerfData"
вариант.
Согласно поданному отчету об ошибках существует обходной путь:
Эта недокументированная опция отключит функцию perfdata:
-XX: -UsePerfData
Стоит отметить, что это особенность, а не ошибка. Вышеупомянутый обходной путь просто отключает эту функцию.
По ссылке свриста:
В первом элементе http://java.sun.com/performance/jvmstat/faq.html упоминается опция, которую можно отключить, чтобы отключить весь набор функций: -XX:-UsePerfData.