如何防止Java创建hsperfdata文件?

时间:2008-09-16 20:03:08

标签: java performance report

我正在编写一个在Linux上运行的Java应用程序(使用Sun的JDK)。它不断创建/tmp/hsperfdata_username目录,我想阻止它们。有没有办法阻止java创建这些文件?

8 个答案:

答案 0 :(得分:31)

尝试JVM选项 -XX:-UsePerfData

more info

以下内容可能来自链接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=6447182http://bugs.sun.com/view_bug.do?bug_id=6938627http://bugs.sun.com/view_bug.do?bug_id=7009828

答案 3 :(得分:1)

编辑:清理信息并总结

要点:

  • 它的功能,而不是错误
  • 可以使用-XX:-UsePerfData进行转换,这可能会影响性能

相关信息:

答案 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_ *文件的唯一选项。

相关问题