在调试nodejs内存问题时,我注意到NodeJS堆空间统计数据永远不准确,同时查看单个空间但这些是准确的,同时总计总数。
v8.getHeapSpaceStatistics()
spaces = [ { space_name: 'new_space',
space_size: 1048576,
space_used_size: 462400,
space_available_size: 569280,
physical_space_size: 1048576 },
{ space_name: 'old_space',
space_size: 4149248,
space_used_size: 3535424,
space_available_size: 297952,
physical_space_size: 4149248 },
{ space_name: 'code_space',
space_size: 3145728,
space_used_size: 1284352,
space_available_size: 128,
physical_space_size: 3145728 },
{ space_name: 'map_space',
space_size: 1126400,
space_used_size: 258984,
space_available_size: 0,
physical_space_size: 1126400 },
{ space_name: 'large_object_space',
space_size: 0,
space_used_size: 0,
space_available_size: 1487879680,
physical_space_size: 0 } ]
如果我们匹配单个空格space_available_size + space_used_size
的数字,则它永远不会等于space_size
。
但是,如果我们对所有空格总结space_size
并将其与v8.getHeapStatistics().total_heap_size
进行核对,结果是准确匹配。
有没有人知道为什么单个空格数永远不匹配?