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