JVM:分配内存失败后继续运行是否不安全?

| 我有一个使用库执行时间和内存消耗步骤的过程,该步骤有时会占用过多的内存并在大型请求上引发分配失败。在这种情况下,接受故障并继续处理是合理的,因此我的解决方案是使对该工具的引用为空,并为随后的输入创建一个新的继续处理的工具。 我们小组中的其他人对此策略表示反对,认为一旦JVM中的内存变得如此紧张以至于分配失败,JVM就会处于可疑状态:没有真正的证据,只有FUD。另一方面,我只能用归纳法论证我还没有见过不良反应(我还没有见过黑天鹅)。 问:是否绝对不安全,并且继续处理引发内存分配故障的JVM是不是很安全?     
已邀请:
        不,这不是绝对不安全的。尽管如果可以的话,最好避免使用它,因为在您开始分配内存失败之后,谁知道您的数据结构将处于哪种不确定状态。 有许多应用程序(特别是webapps)可以很好地解决内存分配失败的问题。但是,是否安全在很大程度上取决于应用程序。再次更新示例,不断更新共享资源的代码的性能将比Webapp差,而Webapp在不同任务之间具有很大的隔离度,而共享资源的方式通常很少。 最主要的是,您要仔细评估应用程序,并对可能遇到的陷阱有个好主意。那,并尝试在故障后尽快重新启动JVM。 ;)     
        当您的内存不足时,其他线程也可能会耗尽内存,它们可能无法如此优雅地进行处理。您可能会发现大部分时间都可以继续,但是最好不要一开始就用完内存。     

要回复问题请先登录注册