NodeJS v8 getheapstatistics方法|如何找到堆的大小?

1,132 阅读2分钟

在本教程中,您可以通过实例学习nodejs的v8模块中的getHeapStatistics 方法。

这包括如何从javascript代码中找到以下内容

  • 如何从代码中获取max_old_space_size的值?
  • 获取nodejs应用程序的最大堆尺寸
  • 检索字符串对象的堆内存
  • 总可用空间大小
  • max-old-space-size

V8是Nodejs环境内部使用的一个引擎。你可以查看V8的版本以及Nodejs的32位或64位

有时,为了调试节点内存不足的错误,我们需要知道环境和应用程序的堆栈大小。为了获得上述所有信息,Nodejs有一个内置的模块v8 ,它有一个内置的getHeapStatistics ,以获得整个系统中运行的应用程序的堆内存的统计信息。

V8还有一个方法[getHeapSpaceStatistics](/nodejs-v8-getheapspacestatistics-method) ,用于统计系统中的空间信息。

语法:

getHeapStatistics()

它返回一个具有以下属性的对象

  • total_heap_size:分配的总堆大小,以字节为单位,如果 配置,它就会增加。used_heap_size
  • total_heap_size_executable :为编译字节代码分配的堆大小,以字节为单位。
  • total_physical_size:硬盘的总可用大小
  • total_available_size:总的可用堆大小
  • heap_size_limit:堆大小的限制,默认值为max_old_space_size
  • used_heap_size: 以字节为单位分配给应用程序的堆大小
  • malloced_memory:当前已分配的内存
  • peak_malloced_memory: 峰值分配的内存
  • does_zap_garbage: 设置为0或1,表示 选项已启用或未启用。zap_code_space
  • number_of_native_contexts: 活跃的顶层本地上下文
  • number_of_detached_contexts: 未被垃圾收集的分离上下文

这将提供有用的堆信息

v8 getHeapStatistics方法示例。

首先使用ES5语法中的require 关键字导入v8模块。

const v8 = require('v8');

Here is an code for v8 getHeapStatistics example
info.js
```javascript
const v8module = require('v8');
  
console.log(v8module.getHeapStatistics());

在命令行中用node命令运行info.js

它输出一个对象

{
  total_heap_size: 4468736,
  total_heap_size_executable: 524288,
  total_physical_size: 4468736,
  total_available_size: 4342053000,
  used_heap_size: 2851944,
  heap_size_limit: 4345298944,
  malloced_memory: 8192,
  peak_malloced_memory: 123168,
  does_zap_garbage: 0,
  number_of_native_contexts: 1,
  number_of_detached_contexts: 0
}

总结

你学会了nodejs应用程序中v8模块的getHeapStatistics方法。它提供了nodejs应用程序以及整个环境的堆统计信息。