1
3
OOM很棘手,因为如果JVM内存不足,它可能不会运行异常处理代码,因为会抛出一个新的OOM。 尝试设置 default uncaught exception handler . 它将捕获所有未捕获的异常。 |
2
2
您可能可以运行另一个进程来监视OOE的日志文件(或者监视进程是否被终止),然后重新启动该进程。 也许把你的应用作为unix deamon或windows服务会更合适。 但是,用分析工具来调查内存泄漏呢? jvisualvm是个不错的选择 |
3
2
你可能想看看
|
5
0
你 可以 (技术上)catch out-ofmemoryer错误,但是如果没有内存的话,不确定是否能够执行catch块中的代码。
也许值得一试:(1)捕获OOM,(2)触发垃圾收集(
|
6
0
你应该解决这个问题,而不是试图补偿它。 堆转储将向您显示消耗内存最多的对象类型。您应该能够弄清楚这些对象在哪里被分配,或者为什么它们在被丢弃之后仍然存在。 关于您接收到的具体错误,请看下面这个问题: Error java.lang.OutOfMemoryError: GC overhead limit exceeded --似乎最简单的解决方案是增加堆的大小。 |
7
0
同样,使用其他人或其他分析工具建议的jvisualvm(jdk 6,在bin文件夹中)是解决问题的最佳方法,而不是处理问题,但假设您将单独调查OOM原因,并尝试消除它们,我将考虑执行以下POC(另请参阅aloi)。S答案) 运行一个Java进程来封装OOM抛出过程的调用如何? 您可以捕获发送到被调用进程的输出流的任何结果,并查看是否存在可用于标识OOM的一致退出代码/堆栈跟踪 我相信还有更多的方法,但在我看来,这是一个很好的、程序化的起点。 |
Community wiki · 如何调试Python内存故障? 1 年前 |
tuskiomi · 如何为参考提供明确的锈蚀寿命? 2 年前 |
cobb208 · Malloc正在为释放指针引发错误 2 年前 |
mo FEAR · C++ STL映射是否在创建后移动了一个值的位置? 2 年前 |
Pooyanoss · 覆盖类的堆栈分配实例 2 年前 |
TheKing · 为什么数组的地址可以有负值? 2 年前 |
Http2inc · 如何从内存中解析这些二进制数据? 2 年前 |
tifrel · 如何检查已编译类型的表示形式? 2 年前 |
Gabriele · 释放GSL矩阵的正确方法是什么? 6 年前 |
Makogan · 3D纹理大小影响程序输出,不会引发错误 6 年前 |