【问题标题】:How do you detect low memory situations within the java virtual machine?如何检测 java 虚拟机内存不足的情况?
【发布时间】:2008-10-24 23:09:48
【问题描述】:

我最近在我的应用程序中遇到了一些 OutOfMemory 错误。是否可以提前检测到虚拟机内存不足?换句话说,在 OutOfMemory 错误实际发生之前抢先处理它们?

【问题讨论】:

    标签: java virtual-machine low-memory


    【解决方案1】:

    Java(从 Java 5 开始)现在有一个标准 JMX bean,可用于接收内存不足通知。见java.lang.management.MemoryMXBean

    【讨论】:

      【解决方案2】:

      我建议一个更好的问题是“为什么我的应用程序内存不足?”

      您可能需要在启动时增加 JVM 可用的内存; 您可能存在内存泄漏(不再需要时未释放的对象。)

      有关应用程序的更多信息也可能会有所帮助

      • 它是否 24x7x365 连续运行?
      • 它是否运行一次并退出?

      使用性能监控/分析工具来查找内存问题的原因确实是您最好的选择。

      【讨论】:

        【解决方案3】:

        看看Runtime的freeMemory方法(详情见http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html

        简而言之: 做

        Runtime.getRuntime().freeMemory()
        

        【讨论】:

        • 值得注意的是,该值只是 Java 中消耗的内存。链接的本机库使用的任何内存都不计算在内。
        猜你喜欢
        • 2010-11-22
        • 1970-01-01
        • 1970-01-01
        • 2011-12-11
        • 2014-08-06
        • 2014-12-16
        • 2014-06-29
        • 2010-10-08
        • 1970-01-01
        相关资源
        最近更新 更多