Как я могу запретить Java создавать файлы hsperfdata? - PullRequest
42 голосов
/ 17 сентября 2008

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

Ответы [ 8 ]

31 голосов
/ 14 октября 2010

Используйте опцию 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 спроектирован так, чтобы он был «всегда включен», но при этом имеет незначительное влияние на производительность ».)

31 голосов
/ 17 сентября 2008

Попробуйте параметр 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.
4 голосов
/ 25 марта 2011

Вместо того, чтобы выключить его, измените местоположение 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 для получения дополнительной информации.

1 голос
/ 03 октября 2018

В качестве дополнения к ответу Мака (отвечено 25 марта '11 в 17:12), опция java.tmp.dir больше не доступна после Java 8. См. Информацию по адресу: https://bugs.java.com/view_bug.do?bug_id=8189674

Таким образом, отключение опции с помощью -XX: -UsePerfData, кажется, единственный вариант, чтобы не иметь файлов hsperfdata_ *.

1 голос
/ 17 июня 2010

Существует также опция "-XX:+PerfDisableSharedMem" (рекомендуется Sun), которая должна вызывать меньше проблем с производительностью, чем при использовании опции "-XX:-UsePerfData".

1 голос
/ 17 сентября 2008

Согласно отчету об ошибке существует обходной путь:

Эта недокументированная опция отключит функция perfdata:
-XX: -UsePerfData

Стоит отметить, что это особенность, а не ошибка. Приведенный выше обходной путь просто отключает эту функцию.

1 голос
/ 17 сентября 2008

Из ссылки свриста:

Первый элемент в http://java.sun.com/performance/jvmstat/faq.html упоминает параметр, который можно отключить, чтобы отключить весь набор функций: -XX: -UsePerfData.

1 голос
/ 17 сентября 2008

РЕДАКТИРОВАТЬ: Очистить информацию и суммировать

Резюме:

  • Это особенность, а не ошибка
  • Его можно отключить с помощью -XX: -UsePerfData, что может снизить производительность

Соответствующая информация:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...