如何检测java虚拟机中的低内存情况?

时间:2008-10-24 23:09:49

标签: java virtual-machine low-memory

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

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

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

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

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

  • 它是否连续运行,24x7x365?
  • 它会运行一次然后退出吗?

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

答案 2 :(得分:2)

查看Runtime的freeMemory方法(有关详细信息,请参阅http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html

简而言之: 做

Runtime.getRuntime().freeMemory()