跳到主要内容

内存数据

2024年12月20日
柏拉文
越努力,越幸运
提示

Node.js 中,可以通过内置的 process 对象和一些系统工具库来获取与内存相关的数据和指标,

一、os


二、v8


三、pidusage


四、process.memoryUsage()


4.1 认识

process.memoryUsage()Node.js 提供的 API,用于返回关于 Node.js 进程内存使用情况的详细信息。

4.2 语法

const memoryUsage = process.memoryUsage();

console.log("内存使用情况:");
console.log(`rss: ${memoryUsage.rss / 1024 / 1024} MB`); // 驻留集大小(Resident Set Size)
console.log(`heapTotal: ${memoryUsage.heapTotal / 1024 / 1024} MB`); // 堆总大小
console.log(`heapUsed: ${memoryUsage.heapUsed / 1024 / 1024} MB`); // 已使用的堆大小
console.log(`external: ${memoryUsage.external / 1024 / 1024} MB`); // V8 引擎管理的 C++ 对象占用的内存
console.log(`arrayBuffers: ${memoryUsage.arrayBuffers / 1024 / 1024} MB`); // ArrayBuffer 和 SharedArrayBuffer 所使用的内存

数据结构

{
"rss": 21299200,
"heapTotal": 4825088,
"heapUsed": 2701480,
"external": 10485,
"arrayBuffers": 9895
}

4.3 指标

  • rss:进程的常驻内存大小,包括堆、栈、代码段等。

  • heapTotal:堆的总分配大小。

  • heapUsed:堆中已经使用的部分。一般看监控数据的时候重点关注 heapUsed 的指标就行了

  • externalV8 引擎管理的 C++ 对象占用的内存。

  • arrayBuffers:用于 ArrayBuffer 的内存。

五、process.resourceUsage()


5.1 认识

process.resourceUsage() 提供了更广泛的资源使用情况,包括内存的使用量。

5.2 语法

const usage = process.resourceUsage();

console.log("资源使用情况:");
console.log(`最大RSS内存: ${usage.maxRSS / 1024} MB`);
console.log(`用户CPU时间: ${usage.userCPUTime} μs`);
console.log(`系统CPU时间: ${usage.systemCPUTime} μs`);