NodeJS - v8.getHeapStatistics() 方法



NodeJS v8.getHeapStatistics() 方法用于检索从 v8 版本派生的堆的统计信息。此方法返回有关堆的统计信息,例如总堆大小、已用堆大小、堆大小限制、总可用大小等。

getHeapSpaceStatistics() 根据系统中的空间返回统计信息,而 getHeapStatistics() 方法检索整个系统的统计信息。

语法

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


 v8.getHeapStatistics()

参数

此方法不接受任何参数。

返回值

此方法返回一个对象,该对象包含有关从 v8 派生的堆的统计信息。

以下是返回的对象中包含的属性。

  • total_heap_size - 此属性指定总堆空间大小。
  • total_heap_size_executable - 此属性指定可用于执行的总堆大小。
  • total_physical_size - 此属性指定磁盘上可用的总物理大小。
  • total_available_size - 此属性指定系统可用的总大小。
  • used_heap_size - 此属性指定使用的堆大小
  • heap_size_limit - 此属性指定用户/应用程序的堆大小限制。
  • malloced_memory − 此属性指定分配给应用程序的内存。
  • peak_malloced_memory - 此属性指定可用于应用程序的内存的最大限制。
  • does_zap_garbage - 这是一个布尔值 0/1,它告诉系统是否启用了 -- zap_code_space选项。
  • number_of_native_contexts - 这是当前处于活动状态的顶级上下文的数量。如果此数字增加,则表明可能存在内存泄漏。
  • number_of_detached_contexts - 这些是垃圾回收器已分离但尚未收集的上下文数。如果此数字不为零,则表示可能存在内存泄漏。

在以下示例中,我们尝试使用 NodeJS getHeapStatistics() 方法获取从 v8 派生的堆的所有统计信息。


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

输出

{
total_heap_size: 5369856,
total_heap_size_executable: 524288,
total_physical_size: 4298984,
total_available_size: 17226372488,
used_heap_size: 2855168,
heap_size_limit: 17230200832,
malloced_memory: 8192,
peak_malloced_memory: 418904,
does_zap_garbage: 0,
number_of_native_contexts: 1,
number_of_detached_contexts: 0
}

在下面的示例中,我们尝试获取 v8 堆的统计信息,例如总堆大小、已用堆大小和堆大小限制。


const v8 = require('v8');
let statistics = v8.getHeapStatistics();
console.log("total_heap_size: " + statistics['total_heap_size']);
console.log("used_heap_size: " + statistics['used_heap_size']);
console.log("heap_size_limit: " + statistics['heap_size_limit']);

输出

total_heap_size: 6086656
used_heap_size: 3769624
heap_size_limit: 17213423616
does_zap_garbage: 0