繁体   English   中英

JVM:memory 分配失败后继续不安全?

[英]JVM: Unsafe to continue after failed memory allocation?

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

Other folks in my group dispute this strategy saying that once memory has become so tight in the JVM that allocation fails, the JVM is in a suspect state: no real proof, just FUD. 另一方面,我只能归纳地争辩说我还没有看到不良影响(我还没有看到任何黑天鹅)。

问:继续使用已引发 memory 分配失败的 JVM 是否绝对不安全且被禁止?

不,这不是绝对不安全的。 尽管如果可以的话,显然最好避免它,因为谁知道在您开始分配 memory 后,您的数据结构将处于哪种不确定的 state 中。

有许多应用程序(尤其是 webapps)可以很好地在 memory 分配失败中幸存下来。 但是,它是否安全在很大程度上取决于应用程序。 再次使用示例,不断更新共享资源的代码会比在不同任务之间具有很大程度分离而共享资源通常很少的 web 应用程序退化得更糟。

最重要的是您仔细评估您的应用程序,并对您可能遇到的陷阱有一个很好的了解。 那,并尝试在故障后尽快重启 JVM。 ;)

当您用完 memory 时,其他线程也可能用完 memory,它们可能无法如此优雅地处理此问题。 您可能会发现大部分时间都可以继续,但最好首先不要用完 memory。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM