javascript中的分配是否会失败,代码操作是否会继续?

javascript中的分配是否会失败,代码操作是否会继续?,javascript,node.js,out-of-memory,allocation,Javascript,Node.js,Out Of Memory,Allocation,所以,我最近有一个过度热情的循环,导致了这个有趣的打印输出: <--- Last few GCs ---> 10472 ms: Scavenge 960.5 (998.3) -> 960.5 (998.3) MB, 0.0 / 0 ms (+ 1.0 ms in 1 steps since last GC) [allocation failure] [incremental marking delaying mark-sweep]. 10641 ms: Mark-

所以,我最近有一个过度热情的循环,导致了这个有趣的打印输出:

<--- Last few GCs --->

   10472 ms: Scavenge 960.5 (998.3) -> 960.5 (998.3) MB, 0.0 / 0 ms (+ 1.0 ms in 1 steps since last GC) [allocation failure] [incremental marking delaying mark-sweep].
   10641 ms: Mark-sweep 960.5 (998.3) -> 577.9 (615.7) MB, 169.6 / 0 ms (+ 1.0 ms in 2 steps since start of marking, biggest step 1.0 ms) [last resort gc].
   10795 ms: Mark-sweep 577.9 (615.7) -> 577.6 (615.7) MB, 153.3 / 0 ms [last resort gc].


<--- JS stacktrace --->

==== JS stack trace =========================================
[Deleted the trace cause who cares]

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory

您无法真正捕获它,因为这反过来会创建一个新的错误对象,该对象随后无法获取分配。我不是说要将其作为标准错误捕获。我只希望分配行失败,然后下面的其余代码尝试继续。我更新了标题,因为它可能令人困惑。即使它继续,你怎么做呢?你没有剩余的内存,你可以分配东西,你不能做操作。你可以做不需要分配的操作,可能会导致垃圾收集进入空闲状态。你应该发布一个答案,因为我的意思是,这更多的是一个讨论问题。通常情况下,口译员会在放弃之前尝试垃圾收集,并说“就是这样,我无法分配更多内存”。在绝大多数情况下,这是一个致命的错误,因为当你达到这一点的时候,你的内存已经满了,你真的什么都做不了。理想情况下,您需要的是一种在循环(或其他)中检查内存的方法,然后在可用内存达到预设限制(例如1MB)时停止。那样的话,仍然有可用的内存来做[某件事]。当你记性不好的时候,已经没有什么可做的了。
var a = 10;
var b = 2;
var c = OverAllocatingFunction(); // Everything would crash here
a = 5 - b; // Can we get here?