49

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

4

8 回答 8

37

尝试 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.
于 2008-09-16T20:13:00.153 回答
36

使用 JVM 选项-XX:-UsePerfData

正如其他一些答案所说,这不会对性能产生负面影响。

默认情况下,在 HotSpot JVM 中打开 jvmstat 检测。JVM 选项-XX:-UsePerfData将其关闭。如果有的话,我会推测,关闭仪器会提高性能(微不足道)。

所以关闭 jvmstat 检测的缺点是你会丢失性能监控信息。

jvmstat 在这里描述http://java.sun.com/performance/jvmstat/

这是一个担心通过打开 jvmstat(带有该选项)会损害性能的人线程-XX:+UsePerfDatahttp://www.theserverside.com/discussions/thread.tss?thread_id=33833
(它可能不会,因为 jvmstat 被设计为“始终在线”,但对性能的影响可以忽略不计。)

于 2010-10-14T13:24:28.543 回答
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了解更多信息。

于 2011-03-25T17:12:57.483 回答
2

还有一个"-XX:+PerfDisableSharedMem"选项(由 Sun 推荐),它应该比使用选项引起的性能问题更少"-XX:-UsePerfData"

于 2010-06-17T09:09:36.850 回答
2

作为 Mack 回复的附录(2011 年 3 月 25 日 17:12 回答),java.tmp.dir 选项自 Java 8 以来看起来不再可用。请参阅以下位置的信息:https://bugs.java.com/view_bug。 do?bug_id=8189674

因此,使用 -XX:-UsePerfData 禁用该选项似乎是唯一没有 hsperfdata_* 文件的选项。

于 2018-10-03T15:12:48.857 回答
1

编辑:清理信息并总结

概括:

  • 它是一个功能,而不是一个错误
  • 可以使用 -XX:-UsePerfData 关闭它,这可能会损害性能

相关资料:

于 2008-09-16T20:12:43.163 回答
1

从 svrist 的链接:

http://java.sun.com/performance/jvmstat/faq.html中的第一项提到了一个选项,您可以关闭该选项以禁用整套功能:-XX:-UsePerfData。

于 2008-09-16T20:19:47.203 回答
1

根据提交的错误报告,有一个解决方法:

此未记录的选项将禁用 perfdata 功能:
-XX:-UsePerfData

值得一提的是,它是一项功能,而不是错误。上述解决方法只是禁用了该功能。

于 2008-09-16T20:20:04.067 回答