Как я могу запретить Java создавать файлы hsperfdata?

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
47
0
70 356
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Обновлено: информация об очистке и обобщение

Резюме:

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

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

Внизу страницы представлено решение, которое действительно работает.

rcreswick 17.09.2008 00:20

Голоса против - это не враждебные действия. Они просто отражают кажущуюся точность вашего ответа. В вашем исходном ответе указано, что решить эту проблему невозможно («Похоже, вы не можете»). Это было неправдой.

Stu Thompson 17.09.2008 01:02
Ответ принят как подходящий

Попробуйте вариант 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.

Eldelshell 09.01.2012 13:48

Исправлена ​​ссылка "подробнее".

Kyle Renfro 17.04.2013 16:49

Я не могу найти документы на сайте Oracle. Здесь что-то есть: oracle.com/technetwork/java/jvmstat-142257.html, но это бесполезно. Если кто-нибудь сможет обновить ссылку, было бы здорово.

Kyle Renfro 02.07.2013 02:04

По ссылке 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".

«что должно вызывать меньше проблем с производительностью». Интересно, а есть ли у вас официальный источник?

Eugène Adell 22.03.2018 21:41

Используйте параметр JVM -XX:-UsePerfData.

Это не окажет негативного влияния на производительность, как говорят некоторые другие ответы.

По умолчанию в JVM HotSpot включен инструментарий jvmstat. Параметр JVM -XX:-UsePerfData отключает его. Во всяком случае, я бы предположил, отключение инструментария улучшило бы производительность (незначительная величина).

Таким образом, обратная сторона отключения инструментария jvmstat заключается в том, что вы теряете информацию мониторинга производительности.

jvmstat описан здесь http://java.sun.com/performance/jvmstat/

Вот ветка с кем-то, кто обеспокоен тем, что включение нанаg> jvmstat - с опцией -XX:+UsePerfData - снизит производительность. http://www.theserverside.com/discussions/thread.tss?thread_id=33833
(Вероятно, этого не произойдет, поскольку jvmstat предназначен для «всегда включен», но оказывает незначительное влияние на производительность ».)

Также см. Это сообщение в блоге разработчика программного обеспечения в Twitter: evanjones.ca/jvm-mmap-pause.html Там он описывает положительное влияние на время паузы сборщика мусора.

Peter 31.03.2015 13:52

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

SimonC 22.02.2012 07:56

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

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

Другие вопросы по теме