Rozważmy następujące dwa programy:Dlaczego węzeł czasami zawiesza się podczas przydzielania klasy Int8Array?
// works.js
var buffer = new ArrayBuffer(16777216);
var HEAP8 = new Int8Array(buffer);
i
// fails.js
var HEAP8;
var buffer = new ArrayBuffer(16777216);
HEAP8 = new Int8Array(buffer);
Run node
następnie wprowadzić .load works.js
. Wszystko wydaje się szczęśliwe. Teraz wyjdź z node
.
Ponownie uruchom node
i wpisz .load fails.js
.
Na moim komputerze ładowanie fails.js
interaktywnie prowadzi proces node
do zużywania ponad 1 GB pamięci RAM i 100% procesora, a ostateczne polecenie blokuje interpretator na zawsze. works.js
po prostu działa i wraca zgodnie z oczekiwaniami.
Czy jest jakiś ważny powód różnicy? A może powinienem napisać raport o błędzie?
Co ciekawe na tyle, bieganie albo skryptu bezpośrednio z wiersza poleceń działa prawidłowo:
node works.js # exits normally
node fails.js # exits normally
UPDATE: Używam węzeł 0.12.0 na OS X 10.9.5
Otrzymałem taki sam wynik na OSX z iojs v2.2.1 –