我正在编写一个在Linux上运行的Java应用程序(使用Sun的JDK)。它不断创建/tmp/hsperfdata_username
目录,我想阻止它们。有没有办法阻止java创建这些文件?
答案 0 :(得分:31)
尝试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.
答案 1 :(得分:31)
使用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被设计为“'始终开启',但对性能的影响可以忽略不计”。)
答案 2 :(得分:4)
不要将其关闭,而是更改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。
答案 3 :(得分:1)
答案 4 :(得分:1)
来自svrist的链接:
http://java.sun.com/performance/jvmstat/faq.html中的第一项提到了一个可以关闭以禁用整套功能的选项:-XX:-UsePerfData。
答案 5 :(得分:1)
根据filed bug report,有一个解决办法:
此未记录的选项将禁用 perfdata功能:
-XX:-UsePerfData
值得一提的是,这是一个功能,而不是一个bug。上述解决方法只是禁用该功能。
答案 6 :(得分:1)
还有"-XX:+PerfDisableSharedMem"
选项(由Sun推荐),与使用"-XX:-UsePerfData"
选项相比,它应该会导致更少的性能问题。
答案 7 :(得分:1)
作为Mack答复的附录(11年3月25日在17:12回答),自Java 8开始,选项java.tmp.dir不再可用。请参见以下信息:DataSnapshot
因此,使用-XX:-UsePerfData禁用该选项似乎是不包含hsperfdata_ *文件的唯一选项。