3

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

4

3 回答 3

6

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

于 2008-10-25T00:45:15.393 回答
3

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

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

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

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

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

于 2008-10-24T23:26:32.930 回答
2

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

简而言之:做

Runtime.getRuntime().freeMemory()
于 2008-10-25T00:08:47.837 回答