我最近在我的应用程序中遇到了一些 OutOfMemory 错误。是否可以提前检测到虚拟机内存不足?换句话说,在 OutOfMemory 错误实际发生之前抢先处理它们?
Obediah Stane
问问题
1925 次
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 回答