У меня есть простой метод Node, который выделяет массив:
function allocateArray(size) {
let arr = Array(size).fill('Hello World');
console.log(`Array size: ${arr.length}`);
console.log(v8.getHeapStatistics());
console.log();
}
allocateArray(1e7);
Когда я запускаю сценарий с помощью команды node --max-heap-size=16 test.js
, мне предоставляется следующая статистика кучи, которая кажется, что использованный размер кучи намного превышает предел размера кучи:
Array size: 10000000
{
total_heap_size: 85463040,
total_heap_size_executable: 524288,
total_physical_size: 84758848,
total_available_size: 2217024,
used_heap_size: 82159392,
heap_size_limit: 16777216,
malloced_memory: 16384,
peak_malloced_memory: 418144,
does_zap_garbage: 0,
number_of_native_contexts: 1,
number_of_detached_contexts: 0
}
Как это возможно?
Примечание. Я также пробовал работать с --max-old-space-size
с аналогичными результатами.