Я пишу приложение Java, работающее в Linux (с использованием Sun JDK). Он продолжает создавать каталоги /tmp/hsperfdata_username, чего я хотел бы предотвратить. Есть ли способ запретить Java создавать эти файлы?




Обновлено: информация об очистке и обобщение
Резюме:
Соответствующая информация:
Голоса против - это не враждебные действия. Они просто отражают кажущуюся точность вашего ответа. В вашем исходном ответе указано, что решить эту проблему невозможно («Похоже, вы не можете»). Это было неправдой.
Попробуйте вариант 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.
Просто укажите, что использование -XX: + PerfDisableSharedMem или -XX: -UsePerfData не позволит JConsole, VisualVM и аналогичным инструментам подключаться к JVM, если вы не активируете JMX.
Исправлена ссылка "подробнее".
Я не могу найти документы на сайте Oracle. Здесь что-то есть: oracle.com/technetwork/java/jvmstat-142257.html, но это бесполезно. Если кто-нибудь сможет обновить ссылку, было бы здорово.
По ссылке svrist:
The first item in http://java.sun.com/performance/jvmstat/faq.html mentions an option which you can turn off to disable the whole suite of features: -XX:-UsePerfData.
Согласно поданный отчет об ошибке есть обходной путь:
This undocumented option will disable the perfdata feature:
-XX:-UsePerfData
Стоит отметить, что это функция, а не ошибка. Вышеупомянутый обходной путь просто отключает эту функцию.
Также существует опция "-XX:+PerfDisableSharedMem" (рекомендованная Sun), которая должна вызывать меньше проблем с производительностью, чем использование опции "-XX:-UsePerfData".
«что должно вызывать меньше проблем с производительностью». Интересно, а есть ли у вас официальный источник?
Используйте параметр JVM -XX:-UsePerfData.
Это не окажет негативного влияния на производительность, как говорят некоторые другие ответы.
По умолчанию в JVM HotSpot включен инструментарий jvmstat. Параметр JVM -XX:-UsePerfData отключает его. Во всяком случае, я бы предположил, отключение инструментария улучшило бы производительность (незначительная величина).
Таким образом, обратная сторона отключения инструментария jvmstat заключается в том, что вы теряете информацию мониторинга производительности.
jvmstat описан здесь http://java.sun.com/performance/jvmstat/
Вот ветка с кем-то, кто обеспокоен тем, что включение -XX:+UsePerfData - снизит производительность.
http://www.theserverside.com/discussions/thread.tss?thread_id=33833
(Вероятно, этого не произойдет, поскольку jvmstat предназначен для «всегда включен», но оказывает незначительное влияние на производительность ».)
Также см. Это сообщение в блоге разработчика программного обеспечения в Twitter: evanjones.ca/jvm-mmap-pause.html Там он описывает положительное влияние на время паузы сборщика мусора.
Вместо того, чтобы отключать его, измените расположение java.io.tmpdir. Добавьте -Djava.io.tmpdir = / mydir /where / else / в свою команду запуска 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 для получения дополнительной информации.
Я знаю, что это старый вопрос, но для поисковиков Google: он работает только в нескольких версиях JVM и больше не поддерживается. См .: bugs.sun.com/view_bug.do?bug_id=6447182, bugs.sun.com/view_bug.do?bug_id=6938627, bugs.sun.com/view_bug.do?bug_id=7009828.
В качестве дополнения к ответу Мака (ответ дан 25 марта 2011 в 17:12), параметр java.tmp.dir больше не доступен с Java 8. См. Информацию по адресу: https://bugs.java.com/view_bug.do?bug_id=8189674
Таким образом, отключение параметра с использованием -XX: -UsePerfData кажется единственным вариантом, чтобы не иметь файлов hsperfdata_ *.
Внизу страницы представлено решение, которое действительно работает.