# @airbnb/node-memwatch 中文文档

规范地址：https://npmcn.com/package/%40airbnb/node-memwatch/

版本：3\.0\.0
npm 元数据更新时间：2026-05-14T19:38:40.047Z
中文译文更新时间：2026-11-05T20:57:46.001Z
软件包许可：未声明

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40airbnb/node-memwatch
原文对照：https://npmcn.com/package/%40airbnb/node-memwatch/?lang=original
项目主页：https://github.com/airbnb/node-memwatch#readme
源码仓库：https://github.com/airbnb/node-memwatch

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：34 kB，19 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：\>= 18
- 运行依赖：2 个
- 首次发布：2018-03-20T20:52:11.441Z
- 最新版本发布：2024-11-08T00:35:00.496Z
- 近 30 天下载量：23610（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 0 个）

## 中文简介

注意你的记忆用量,发现并隔离出漏.

## 安装

```sh
npm install @airbnb/node-memwatch
```

也可以使用：`pnpm add @airbnb/node-memwatch`、`yarn add @airbnb/node-memwatch`、`bun add @airbnb/node-memwatch`

## README

# `node-memwatch`: 为节点进行漏出检测和堆积潜水

`node-memwatch` 是来帮助你发现内存泄露的 节点JS代码. 它规定:

-   A 类 `stats` 全部 MarkSweepCompact GCs 上发布的事件 数据描述您的堆积用量和长期趋势.
    
-   A 类 `HeapDiff` 类,让你比较你的堆积状态 两分时间,告诉你分配了什么,什么 已经释放.
    

## 安装

-   `npm install @airbnb/node-memwatch`

## 说明

调试和剖析内存的工具越来越多 节点JS应用程序中的用法,但仍需要 平台独立本地模块,不需要特殊 仪器 本单元试图满足这一需要.

要开始, 导入 `node-memwatch` 像这样:

```javascript
var memwatch = require('@airbnb/node-memwatch');
```

### 泄漏检测

目前我们探索休克时不支持

### 高使用率

评估你的记忆足迹的最好方法是看一看堆积 v8完成垃圾收集后立即使用. `memwatch` 已经 正是这样 - 它检查堆积的使用 只有在GC给你一个稳定 您实际内存使用情况的基线 .

当V8进行垃圾收集时(从技术上讲,我们是在谈论 以密布的光圈盟誓, `memwatch` 将发出一个 `stats` 活动.

```javascript
memwatch.on('stats', function(stats) { ... });
```

这个 `stats` 数据会看起来像这样:

```javascript
{
  gcScavengeCount: 1,
  gcScavengeTime: 1100880, // ns
  gcMarkSweepCompactCount: 2,
  gcMarkSweepCompactTime: 21157231, // ns
  gcIncrementalMarkingCount: 0,
  gcIncrementalMarkingTime: 0, //ns
  gcProcessWeakCallbacksCount: 0,
  gcProcessWeakCallbacksTime: 0, // ns
  total_heap_size: 16097280, // bytes
  total_heap_size_executable: 3670016, // bytes
  total_physical_size: 10741880, // bytes
  total_available_size: 1487689928, // bytes
  used_heap_size: 5691584, // bytes
  heap_size_limit: 1501560832, // bytes
  malloced_memory: 8192,
  peak_malloced_memory: 1185464,
  gc_time: 4587251 // ns
}
```

V8有它自己的想法 什么时候才是最好的 GC,和在 重载,它可能会推迟一段时间。 帮助 更快的调试, `memwatch` 页:1 `gc()` 将 V8 强制至 做一个完整的GC和堆积的收缩.

### 挤出水面

对于泄漏隔离,它提供了一个 `HeapDiff` 需要两个快照和 计算它们之间的分数。 例如:

```javascript
// Take first snapshot
var hd = new memwatch.HeapDiff();

// do some things ...

// Take the second snapshot and compute the diff
var diff = hd.end();
```

内容 `diff` 看起来像:

```javascript
{
  "before": { "nodes": 11625, "size_bytes": 1869904, "size": "1.78 mb" },
  "after":  { "nodes": 21435, "size_bytes": 2119136, "size": "2.02 mb" },
  "change": { "size_bytes": 249232, "size": "243.39 kb", "freed_nodes": 197,
    "allocated_nodes": 10007,
    "details": [
      { "what": "String",
        "size_bytes": -2120,  "size": "-2.07 kb",  "+": 3,    "-": 62
      },
      { "what": "Array",
        "size_bytes": 66687,  "size": "65.13 kb",  "+": 4,    "-": 78
      },
      { "what": "LeakingClass",
        "size_bytes": 239952, "size": "234.33 kb", "+": 9998, "-": 0
      }
    ]
  }
}
```

Diff显示在抽样期间 拨款 `String` 财务报告和审定财务报表 `Array` 班级减少,但 `Leaking Class` 增加了9998笔拨款。 对.

你用得着 `HeapDiff` 在你身边 `on('stats')` 召回; 即使这样 抓取一个记忆快照,它触发一个 V8 GC,它不会触发 页:1 `stats` 事件本身。 因为这太傻了.

## 未来工作

请参见“问题”,以分享建议并作出贡献!

## 许可证

[http://wtfpl.net (英语)](http://wtfpl.net/)

## 常见问题

### @airbnb/node-memwatch 是什么？

注意你的记忆用量,发现并隔离出漏\.

### 如何安装 @airbnb/node-memwatch？

在项目目录运行 npm install @airbnb/node-memwatch，或使用 pnpm add / yarn add / bun add。

### @airbnb/node-memwatch 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/airbnb\_\_node-memwatch 是否存在。

### @airbnb/node-memwatch 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @airbnb/node-memwatch 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>= 18。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @airbnb/node-memwatch 可以商用吗？

@airbnb/node-memwatch 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @airbnb/node-memwatch 的下载量有多少？

根据 npm 官方下载统计，@airbnb/node-memwatch 在 2026/10/05 – 2026/11/03 这 30 天内被下载 23,610 次，日均约 787 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @airbnb/node-memwatch 还在维护吗？

最新版本 3\.0\.0 发布于 2024/11/08（2 年前）；至今共发布 6 个版本，其中过去 12 个月发布了 0 个；首次发布于 2018/03/21。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

