NodeJS - v8.getHeapSpaceStatistics() 方法



NodeJS v8.getHeapSpaceStatistics() 方法返回 v8 堆空间的统计信息。此方法将统计信息返回为对象数组,例如新空间、旧空间、代码空间、地图空间和大型对象空间。每个对象都包含有关空间名称、空间大小、已用空间大小、可用空间大小和物理空间大小的数据。

语法

以下是NodeJS v8.getHeapSpaceStatistics()方法的语法 -


 v8.getHeapSpaceStatistics()

参数

此方法不接受任何参数。

返回值

此方法返回一个对象数组,其中包含 v8 堆空间的统计信息。

以下是返回的对象数组中存在的属性 -

  • space_name - 这是一个字符串,用于指定堆空间的名称。
  • space_size - 这是一个指定堆空间大小的数字
  • space_used_size - 这是一个数字,用于指定已用堆空间大小。
  • space_available_size - 指定可用堆空间大小的数字。
  • physical_space_size - 指定物理堆空间大小的数字。

在以下示例中,我们尝试使用 NodeJS v8.getHeapSpaceStatistics() 方法获取 v8 堆空间的统计信息。


const v8 = require('v8');
console.log(v8.getHeapSpaceStatistics());

输出

执行上述程序后,NodeJS getHeapSpaceStatistics() 方法返回了一个对象数组,其中包含大约 v8 堆空间的属性。

Statistics of v8 heap space:
[
{
space_name: 'new_space',
space_size: 2097152,
space_used_size: 653080,
space_available_size: 378088,
physical_space_size: 2059736
},
{
space_name: 'old_space',
space_size: 2396160,
space_used_size: 2295248,
space_available_size: 168,
physical_space_size: 2338768
},
{
space_name: 'code_space',
space_size: 1048576,
space_used_size: 572736,
space_available_size: 0,
physical_space_size: 605504
},
{
space_name: 'map_space',
space_size: 544768,
space_used_size: 288160,
space_available_size: 0,
physical_space_size: 305568
},
{
space_name: 'large_object_space',
space_size: 0,
space_used_size: 0,
space_available_size: 17206803968,
physical_space_size: 0
}
]

在以下示例中,我们尝试以表格形式打印有关堆空间的统计信息。


const v8 = require('v8');
let statistics = v8.getHeapSpaceStatistics();
var EmpArr = []
for (var i = 0; i < statistics.length; i++){ 	 	
	 	var element = statistics[i]; 	
	 	EmpArr.push({ "Space Name": element['space_name'],	
	 	"Space Size": element['space_size'],	
	 	"Used Space Size": element['space_used_size'],	
	 	"Space Available": element['space_available_size'],	
	 	"Physical Space Size":element['physical_space_size'] },);
}
console.table(EmpArr)

输出

┌─────────┬───────────────────────────┬────────────┬─────────────────┬─────────────────┬─────────────────────┐
│ (index)         │        Space Name         │ Space Size │ Used Space Size │ Space Available │ Physical Space Size │
├─────────┼───────────────────────────┼────────────┼─────────────────┼─────────────────┼─────────────────────┤
│    0               │     'read_only_space'     │   262144   │      32808      │        0        │        33088        │
│    1               │        'new_space'           │  2097152   │     649048      │     398408      │       2088064       │
│    2               │        'old_space'             │  1916928   │     1582912     │      88736      │       1585152       │
│    3               │       'code_space'           │   430080   │     155616      │        0        │       172000        │
│    4               │        'map_space'           │   528384   │     308800      │        0        │       309640        │
│    5               │   'large_object_space'    │   135168   │     131112      │        0        │       135168        │
│    6               │ 'code_large_object_space' │     0      │        0        │        0        │          0          │
│    7               │ 'new_large_object_space'  │     0      │        0        │     1047456     │          0          │
└─────────┴───────────────────────────┴────────────┴─────────────────┴─────────────────┴──────────────────────

注意 - 为了更好地理解,让我们在本地执行上述代码。

执行上述代码后,getHeapSpaceStatistics() 方法返回一个由新空间、旧空间、代码空间、地图空间和大对象空间等 5 个对象组成的数组。

V8 Getheapspace统计