在SO上有很多与“OutOfMemoryError: Java Heap”错误相关的问题,但阅读它们时,大多数似乎只是讨论如何增加堆大小或对应用程序进行分析并检测内存泄漏。
我正在处理一个项目,涉及分析分支和界算法的成本。对于小输入大小,要搜索的潜在解决方案数量以O(n!)的速度增长。在某个输入大小n处,我遇到了“OutOfMemoryError”,因为部分解决方案保留在优先队列中,直到准备好进行处理,而队列中大量的部分解决方案填满了内存。所以,我知道我没有内存泄漏,也不一定想增加堆大小。
我想做的就是简单地检测内存快要满了,然后给用户一个消息,告诉他们发生了什么,以及程序为什么退出(此时程序不必继续运行)。有没有办法做到这一点?我已经查看了java.lang.management
包,但它对我来说没有太多意义,我很难找到像样的示例代码。感激任何解释或示例代码。