Node - недопустимая длина массива
Я использую node v0.12.4.
Когда я запускаю следующий код с node --max-old-space-size=8192 test.js
, он дает мне ошибку FATAL ERROR: invalid array length Allocation failed - process out of memory
var a = new Array(200000000);
console.log(a.length);
Однако, если я изменяю размер до 300000000, я не получаю никаких ошибок. Что здесь происходит? Есть ли аргумент командной строки в стороне от --max-old-space-size
Мне нужно изменить?
Ответы
Ответ 1
Размер кучи V8 ограничен до 1 ГБ для 64 бит и 512 для 32-разрядной машины, но объекты буфера существуют в основном вне кучи. вы можете расширить использование памяти до 1,7 ГБ в 64-битной и ~ 1 ГБ на 32-битной машине.
Вы можете попробовать это.
--max-old-space-size=3000 --trace-gc-verbose
вы можете распечатать трассировку, чтобы узнать об использовании памяти.
Ответ 2
Существует предел памяти .64 бит. Машины могут использовать около 1,6 гб. Это предел компилятора V8.
эти ссылки могут помочь вам
Настройка управления памятью v8, чтобы быть умным для процесса node.js
https://groups.google.com/forum/#!topic/nodejs/BQ5dSm8lITQ