【发布时间】:2008-10-24 23:09:48
【问题描述】:
我最近在我的应用程序中遇到了一些 OutOfMemory 错误。是否可以提前检测到虚拟机内存不足?换句话说,在 OutOfMemory 错误实际发生之前抢先处理它们?
【问题讨论】:
标签: java virtual-machine low-memory
我最近在我的应用程序中遇到了一些 OutOfMemory 错误。是否可以提前检测到虚拟机内存不足?换句话说,在 OutOfMemory 错误实际发生之前抢先处理它们?
【问题讨论】:
标签: java virtual-machine low-memory
Java(从 Java 5 开始)现在有一个标准 JMX bean,可用于接收内存不足通知。见java.lang.management.MemoryMXBean。
【讨论】:
我建议一个更好的问题是“为什么我的应用程序内存不足?”
您可能需要在启动时增加 JVM 可用的内存; 您可能存在内存泄漏(不再需要时未释放的对象。)
有关应用程序的更多信息也可能会有所帮助
使用性能监控/分析工具来查找内存问题的原因确实是您最好的选择。
【讨论】:
看看Runtime的freeMemory方法(详情见http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html)
简而言之: 做
Runtime.getRuntime().freeMemory()
【讨论】: