当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js vm.measureMemory([options])用法及代码示例


vm.measureMemory([options])

添加于:v13.10.0
Stability: 1 - 实验性

测量 V8 已知并由当前 V8 隔离或主上下文已知的所有上下文使用的内存。

  • options <Object>可选的。
    • mode <string> 'summary''detailed' 。在摘要模式下,仅返回为主上下文测量的内存。在详细模式下,将返回为当前 V8 隔离已知的所有上下文测量的内存。 默认: 'summary'
    • execution <string> 'default''eager' 。在默认执行下,promise 将在下一次计划的垃圾收集开始之后才会解析,这可能需要一段时间(或者如果程序在下一次 GC 之前退出,则永远不会)。通过 Eager Execution,GC 将立即启动以测量内存。 默认: 'default'
  • 返回: <Promise> 如果内存被成功测量,promise 将使用包含内存使用信息的对象来解决。

返回的 Promise 可以解析的对象的格式特定于 V8 引擎,并且可能会从 V8 的一个版本更改为下一个版本。

返回的结果与v8.getHeapSpaceStatistics()返回的统计数据不同之处在于vm.measureMemory()测量V8引擎当前实例中每个V8特定上下文可达的内存,而v8.getHeapSpaceStatistics()的结果测量每个堆占用的内存当前 V8 实例中的空间。

const vm = require('node:vm');
// Measure the memory used by the main context.
vm.measureMemory({ mode: 'summary' })
  // This is the same as vm.measureMemory()
  .then((result) => {
    // The current format is:
    // {
    //   total: {
    //      jsMemoryEstimate: 2418479, jsMemoryRange: [ 2418479, 2745799 ]
    //    }
    // }
    console.log(result);
  });

const context = vm.createContext({ a: 1 });
vm.measureMemory({ mode: 'detailed', execution: 'eager' })
  .then((result) => {
    // Reference the context here so that it won't be GC'ed
    // until the measurement is complete.
    console.log(context.a);
    // {
    //   total: {
    //     jsMemoryEstimate: 2574732,
    //     jsMemoryRange: [ 2574732, 2904372 ]
    //   },
    //   current: {
    //     jsMemoryEstimate: 2438996,
    //     jsMemoryRange: [ 2438996, 2768636 ]
    //   },
    //   other: [
    //     {
    //       jsMemoryEstimate: 135736,
    //       jsMemoryRange: [ 135736, 465376 ]
    //     }
    //   ]
    // }
    console.log(result);
  });

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 vm.measureMemory([options])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。