【问题标题】:How can I prevent Java from creating hsperfdata files?如何防止 Java 创建 hsperfdata 文件?
【发布时间】:2008-09-16 20:03:08
【问题描述】:

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

【问题讨论】:

    标签: java performance report


    【解决方案1】:

    尝试 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.
    

    【讨论】:

    • 只是要指出,除非您激活 JMX,否则使用 -XX:+PerfDisableSharedMem 或 -XX:-UsePerfData 将不允许 JConsole、VisualVM 和类似工具连接到 JVM。
    • “更多信息”链接已修复。
    【解决方案2】:

    使用 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 被设计为“始终在线”,但对性能的影响可以忽略不计。)

    【讨论】:

    【解决方案3】:

    与其关闭它,不如更改 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 了解更多信息。

    【讨论】:

    【解决方案4】:

    还有"-XX:+PerfDisableSharedMem" 选项(由Sun 推荐)与使用"-XX:-UsePerfData" 选项相比应该会导致更少的性能问题。

    【讨论】:

    • " 这应该会导致更少的性能问题" 。有趣,但你有任何官方来源吗?
    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:

      来自 svrist 的链接:

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

      【讨论】:

        【解决方案7】:

        根据filed bug report 有一个解决方法:

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

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

        【讨论】:

          【解决方案8】:

          编辑:清理信息并总结

          总结:

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

          相关信息:

          【讨论】:

          • 该页面的底部概述了一个确实有效的解决方案。
          • 反对票不是敌对行为。它们只是反映了您对答案的感知准确性。您的原始答案表明它无法解决(“看起来你不能”)。那不是真的。
          猜你喜欢
          • 2021-08-03
          • 1970-01-01
          • 2018-08-05
          • 2011-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-22
          • 2019-06-01
          相关资源
          最近更新 更多