【发布时间】:2008-09-16 20:03:08
【问题描述】:
我正在编写一个在 Linux 上运行的 Java 应用程序(使用 Sun 的 JDK)。它不断创建/tmp/hsperfdata_username 目录,我想阻止它。有什么办法可以阻止 java 创建这些文件?
【问题讨论】:
标签: java performance report
我正在编写一个在 Linux 上运行的 Java 应用程序(使用 Sun 的 JDK)。它不断创建/tmp/hsperfdata_username 目录,我想阻止它。有什么办法可以阻止 java 创建这些文件?
【问题讨论】:
标签: java performance report
尝试 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。
正如其他一些答案所说,这不会对性能产生负面影响。
默认情况下,HotSpot JVM 中的 jvmstat 检测是打开的。 JVM 选项-XX:-UsePerfData 将其关闭。如果有的话,我推测,关闭仪器会提高性能(微不足道)。
所以关闭 jvmstat 检测的缺点是您会丢失性能监控信息。
这里描述了jvmstat http://java.sun.com/performance/jvmstat/
这里有人担心打开 on jvmstat - 使用选项-XX:+UsePerfData - 会损害性能。
http://www.theserverside.com/discussions/thread.tss?thread_id=33833
(它可能不会,因为 jvmstat 被设计为“始终在线”,但对性能的影响可以忽略不计。)
【讨论】:
与其关闭它,不如更改 java.io.tmpdir 位置。 将 -Djava.io.tmpdir=/mydir/somewhere/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 了解更多信息。
【讨论】:
还有"-XX:+PerfDisableSharedMem" 选项(由Sun 推荐)与使用"-XX:-UsePerfData" 选项相比应该会导致更少的性能问题。
【讨论】:
作为 Mack 回复的附录(2011 年 3 月 25 日 17:12 回答),java.tmp.dir 选项自 Java 8 以来似乎不再可用。请参阅以下信息:https://bugs.java.com/view_bug.do?bug_id=8189674
因此,使用 -XX:-UsePerfData 禁用该选项似乎是唯一没有 hsperfdata_* 文件的选项。
【讨论】:
来自 svrist 的链接:
http://java.sun.com/performance/jvmstat/faq.html 中的第一项提到了一个选项,您可以关闭该选项以禁用整套功能:-XX:-UsePerfData。
【讨论】:
根据filed bug report 有一个解决方法:
这个未记录的选项将禁用 perfdata 功能:
-XX:-UsePerfData
值得一提的是,它是一项功能,而不是错误。上述解决方法只是禁用了该功能。
【讨论】: