Может ли выделение завершиться неудачно и кодовая операция продолжится в javascript?

Итак, у меня недавно был слишком усердный цикл, который привел к появлению этой забавной распечатки:

<--- 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

Я исправил это, и это не проблема, но на самом деле я очень близко подхожу к пределу. Я заполняю массив, полный данных, и в основном просто беру средний анализ заполненных данных. Это действительно не должен быть полный список, поэтому я смог остановить цикл и сделать все хорошо.

Но разрыв цикла не всегда идеален. Я знаю, что мы не можем предотвратить неудачное распределение, но это заставило меня задуматься. Может ли выделение завершиться неудачно и кодовая операция продолжится в javascript?

В принципе, возможен ли этот сценарий при правильной настройке?

var a = 10;
var b = 2;
var c = OverAllocatingFunction(); // Everything would crash here
a = 5 - b; // Can we get here?

0 ответов

Другие вопросы по тегам