当前位置: 首页 > 知识库问答 >
问题:

如何监视Node.js的内存使用情况?

齐英朗
2023-03-14

如何监视Node.js的内存使用情况?

共有1个答案

狄鸿禧
2023-03-14

内置的进程模块有一个方法MemoryUsage,它可以洞察当前Node.js进程的内存使用情况。下面是64位系统中节点V0.12.2中的一个示例:

$ node --expose-gc
> process.memoryUsage();  // Initial usage
{ rss: 19853312, heapTotal: 9751808, heapUsed: 4535648 }
> gc();                   // Force a GC for the baseline.
undefined
> process.memoryUsage();  // Baseline memory usage.
{ rss: 22269952, heapTotal: 11803648, heapUsed: 4530208 }
> var a = new Array(1e7); // Allocate memory for 10m items in an array
undefined
> process.memoryUsage();  // Memory after allocating so many items
{ rss: 102535168, heapTotal: 91823104, heapUsed: 85246576 }
> a = null;               // Allow the array to be garbage-collected
null
> gc();                   // Force GC (requires node --expose-gc)
undefined
> process.memoryUsage();  // Memory usage after GC
{ rss: 23293952, heapTotal: 11803648, heapUsed: 4528072 }
> process.memoryUsage();  // Memory usage after idling
{ rss: 23293952, heapTotal: 11803648, heapUsed: 4753376 }

在这个简单的示例中,您可以看到分配一个10M元素的数组使用了大约80MB(看看heapused)。
如果查看V8的源代码(array::newheap::allocaterawfixedarrayfixedarray::sizefor),您将看到数组使用的内存是一个固定值加上长度乘以指针的大小。后者在64位系统上是8个字节,这证实了观察到的8×10=80MB的内存差异是有意义的。

 类似资料:
  • 问题内容: 如何监视Node.js的内存使用情况? 问题答案: node-memwatch:检测并查找Node.JS代码中的内存泄漏。查看本教程,以跟踪Node.js中的内存泄漏

  • 问题内容: 我目前正在测试将密钥插入数据库Redis(在本地)中。我有超过500万个密钥,而且我只有4GB的RAM,所以一时我达到了RAM的容量并交换了数据(并且我的PC掉了)。 我的问题是:如何在具有Redis数据库的计算机上监视内存使用情况,并以此方式发出警报,不再在Redis数据库中插入某些密钥? 谢谢。 问题答案: 关于内存使用情况,建议您查看redis.io 常见问题解答以及有关将red

  • vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可实时动态监视操作系统的虚拟内存、进程、CPU活动。 10.1. vmstat的语法   vmstat [-V] [-n] [delay [count]] - -V表示打印出版本信息;- -n表示在周期性循环输出时,输出的头部信息仅显示一次;- delay是两次输出之间的延迟时间;- count是指按照这个时

  • 我们通常处理OutOfMemoryError问题是因为堆或permgen大小配置问题。 但所有JVM内存都不是permgen或heap。据我理解,它还可以与线程/堆栈、原生JVM代码... 但是使用pmap我可以看到进程分配了9.3G,这是3.3G的离堆内存使用量。 我想知道有什么可能性来监视和调优这种额外的离堆内存消耗。 我不使用直接离堆内存访问(MaxDirectMemorySize是64M默

  • 问题内容: 我想用Java监视以下系统信息: 当前的CPU使用率*(百分比) 可用内存 (可用/总计) 可用磁盘空间(可用/总) 请注意,我的意思是整个系统可用的整体内存,而不仅仅是JVM。 我正在寻找一种不依赖于我自己的调用外部程序或使用JNI的代码的跨平台解决方案(Linux,Mac和Windows)。尽管这些是可行的选择,但如果有人已经有了更好的解决方案,我宁愿自己不要维护特定于操作系统的代

  • 问题内容: 我想在一个Java进程中运行多个REST Web应用程序,以节省内存并借助Akka轻松扩展。我想估计每个请求处理程序消耗多少内存,并检测整个系统的危险情况。 是否有可能几乎实时监视该进程中的内存使用情况,并找出每个请求处理程序使用了多少内存?我需要实现什么?有什么工具吗? 是否有可能捕获并根据内存使用量执行某些操作,例如仅崩溃超过请求的内存限制的请求处理程序?如果是这样,那有什么不好呢