Оптимизируйте FS writeFile, чтобы избежать кучи нехватки памяти при больших размерах файлов - PullRequest
0 голосов
/ 04 июля 2019

В основном мне нужно открыть файл json, передать в него данные и снова сохранить.Это с большим количеством данных, сделанным многократно.

Дело в том, что я не могу закончить все чтение.

Я протестировал следующий код:

var array = require('./test.json')

for (let i = 0;i<999999999999;i++){
array.push(i)

}

fs.writeFile('./test.json', array, function (err) {
    if (err) {
        return console.log(err);
    }

    console.log('saved');
});

И он возвращает:

<--- Last few GCs --->

[3632:000001B9DE56BD10]     2076 ms: Mark-sweep 577.7 (585.1) -> 577.7 (585.1) MB, 92.5 / 0.0 ms  allocation failure GC in old space requested
[3632:000001B9DE56BD10]     2174 ms: Mark-sweep 577.7 (585.1) -> 577.7 (582.1) MB, 97.6 / 0.0 ms  last resort GC in old space requested
[3632:000001B9DE56BD10]     2273 ms: Mark-sweep 577.7 (582.1) -> 577.7 (582.1) MB, 99.3 / 0.0 ms  last resort GC in old space requested


<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 00000364863257C1 <JSObject>
    1: /* anonymous */ [C:\test\test.js:~1] [pc=000002501A885DE4](this=00000101E000A879 <Object map = 000001EDFF6023B9>,exports=00000101E000A879 <Object map = 000001EDFF6023B9>,require=00000101E000A831 <JSFunction require (sfi = 000000F3AFACAB59)>,module=00000101E000A7A9 <Module map = ...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
 1: node_module_register
 2: v8::internal::FatalProcessOutOfMemory
 3: v8::internal::FatalProcessOutOfMemory
 4: v8::internal::Factory::NewUninitializedFixedArray
 5: v8::internal::WasmDebugInfo::SetupForTesting
 6: v8::internal::interpreter::BytecodeArrayRandomIterator::UpdateOffsetFromIndex
 7: 000002501A7043C1

Мой вопрос:

Как оптимизировать код, чтобы избежать этих проблем с памятью?

Оцените помощь!

...