JVM:内存分配失败后继续安装不安全?

时间:2011-05-27 13:46:16

标签: java jvm

我有一个使用库来执行时间和内存消耗步骤的进程,有时需要占用太多内存并在大型请求中引发分配失败。在这种情况下,接受失败并继续处理是合理的,所以我的解决方案是废弃我对该工具的引用并创建一个新工具以继续处理后续输入。

我小组中的其他人对此策略提出异议,称一旦内存在JVM中变得如此紧张以至于分配失败,JVM就处于可疑状态:没有真正的证据,只有FUD。另一方面,我只能归纳地证明我还没有看到不良影响(我还没见过任何黑天鹅)。

问:它是否绝对不安全,并且继续使用导致内存分配失败的JVM?

2 个答案:

答案 0 :(得分:3)

不,它不是绝对不安全。虽然如果可以的话,明显要好好避免它,因为谁知道在你开始无法分配内存之后你的数据结构会处于什么样的不确定状态。

有许多应用程序(尤其是webapps)可以很好地解决内存分配失败问题。但是,它是否安全在很大程度上取决于应用。不断更新共享资源的代码将比使用一个例子的网络应用更糟糕,这些网络应用程序在不同任务之间具有很大程度的分离,通常很少有共享资源。

主要是你仔细评估你的申请,并对你可能遇到的陷阱有一个很好的了解。那,并尝试在失败后尽快重启JVM。 ;)

答案 1 :(得分:1)

当内存不足时,其他线程也会耗尽内存,并且可能无法正常处理。您可能会发现大部分时间都可以继续,但最好不要在第一时间内耗尽内存。