在本教程中,您将通过实例学习nodejs的v8模块中的v8.getHeapSpaceStatistics() 方法,getHeapSpaceStatistics 方法根据空间返回关于堆大小的统计数据。v8是谷歌chrome的一个开源javascript引擎,被nodejs和Mongodb使用。
什么是v8中的空间?空间是由v8引擎分配的一大块内存。V8有以下不同的空间用于存储和清理堆内存中的对象:
- 新空间:这是为新对象使用的小内存,用于快速收集对象的垃圾。
- 旧指针空间:存储指向其他对象的长期存在的对象。
- 旧数据空间:这些是对象,普通的原始数据没有对其他对象的引用。
- 代码空间:用于编译和JIT执行的可执行内存。
- 单元空间、属性-单元空间和地图空间。储存相同大小的单元属性和地图相关的对象。
- 大对象空间:存储大对象
getHeapSpaceStatistics方法返回上述对象空间的统计数据。
每个对象都持有关于可用空间和物理堆大小的信息。
V8是一个被Nodejs环境内部使用的引擎。你可以查看Nodejs的 V8版本和32位或64位。
有时,为了调试节点内存不足的错误,我们需要了解环境和应用程序的堆大小。
为了获得上述所有信息,Nodejs有一个内置的模块v8 ,它有一个内置的getHeapSpaceStatistics ,以获得基于空间的堆内存分配的统计信息。
V8有另一个方法[getHeapStatistics](/nodejs-v8-getheapstatistics-method) ,用于统计整个系统中的堆内存。语法:
getHeapSpaceStatistics()
它返回一个具有以下属性的对象
space_name:所用空间的名称,例子是read_only_space,new_space,old_space,code_space,map_space,large_object_space,code_large_object_space,new_large_object_spacespace_size:已分配的空间堆大小,以字节为单位space_used_size:已用空间的堆大小,以字节为单位space_available_size:可用空间堆大小(字节physical_space_size:物理空间堆的大小(字节
这将提供有用的堆信息
v8 getHeapSpaceStatistics方法示例。
首先使用ES5语法中的require 关键字导入v8模块。
const v8module = require('v8');
下面是一个v8 getHeapSpaceStatistics方法的例子info.js的代码
const v8module = require('v8');
console.log(v8module.getHeapSpaceStatistics());
在命令行中使用node命令运行info.js。
node info.js
它输出一个对象
[
{
space_name: 'read_only_space',
space_size: 151552,
space_used_size: 150392,
space_available_size: 0,
physical_space_size: 151552
},
{
space_name: 'new_space',
space_size: 2097152,
space_used_size: 881912,
space_available_size: 165512,
physical_space_size: 2097152
},
{
space_name: 'old_space',
space_size: 1458176,
space_used_size: 1349464,
space_available_size: 248,
physical_space_size: 1458176
},
{
space_name: 'code_space',
space_size: 360448,
space_used_size: 87456,
space_available_size: 0,
physical_space_size: 360448
},
{
space_name: 'map_space',
space_size: 528384,
space_used_size: 262152,
space_available_size: 0,
physical_space_size: 528384
},
{
space_name: 'large_object_space',
space_size: 135168,
space_used_size: 131112,
space_available_size: 0,
physical_space_size: 135168
},
{
space_name: 'code_large_object_space',
space_size: 0,
space_used_size: 0,
space_available_size: 0,
physical_space_size: 0
},
{
space_name: 'new_large_object_space',
space_size: 0,
space_used_size: 0,
space_available_size: 1047424,
physical_space_size: 0
}
]