我正在编写一个在 Linux 上运行的 Java 应用程序(使用 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
。
正如其他一些答案所说,这不会对性能产生负面影响。
默认情况下,在 HotSpot JVM 中打开 jvmstat 检测。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/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。