如何定位和分析 Node.js 项目中的内存泄漏问题 All In One
如何定位和分析 Node.js 项目中的内存泄漏问题 All In One
How to locate and analyze memory leaks in Node.js projects
内存泄漏 / memory leaks
- 内存管理
- 垃圾回收
// GC
-
Reference-counting garbage collection / 引用计数垃圾收集 ❌ (
引用计数
)
⚠️ 注意:现代浏览器不再使用
引用计数来进行垃圾回收。 -
Mark-and-sweep algorithm / 标记扫描算法 ✅ (
标记清除
)
该算法将“不再需要
对象”的定义简化为“无法访问
对象”。
avaScript 引擎通常提供公开内存模型
的标志。
例如,Node.js 提供了额外的选项和工具
,这些选项和工具公开了用于配置和调试
内存问题的底层 V8 机制
。
此配置在浏览器中可能不可用,对于网页(通过 HTTP 标头等)更是如此。
garbage collector
/ 垃圾收集器
# 使用 --max-old-space-size 标志, 增加可用堆内存的最大数量
$ node --max-old-space-size=6000 index.js
# 使用 --expose-gc --inspec 标志和 Chrome 调试器公开垃圾收集器以调试内存问题
$ node --expose-gc --inspect index.js
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management
https://nodejs.org/en/docs/guides/debugging-getting-started/
js 数据类型
- 值类型(
值
),内存分配使用栈
??? - 引用类型(
指针
),内存分配
使用堆
(内存泄漏)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures
https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop
Debugging
Most memory issues can be solved by determining how much space our specific type of objects take and what variables are preventing them from being garbage collected.
It can also help to know the allocation pattern of our program over time.
大多数内存问题可以通过确定我们特定类型的对象占用多少空间以及哪些变量阻止它们被垃圾收集来解决。
它还可以帮助了解我们的程序随时间的分配模式。
Heap Profiler / 堆分析器
Heap Snapshot / 堆快照
GC Traces / GC 跟踪
https://nodejs.org/en/docs/guides/diagnostics/memory/#debugging
(🐞 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblogs.com/xgqfrms/ 查看原创文章!
refs
https://nodejs.org/en/docs/guides/diagnostics/memory/
©xgqfrms 2012-2021
www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!
原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!
本文首发于博客园,作者:xgqfrms,原文链接:https://www.cnblogs.com/xgqfrms/p/17211580.html
未经授权禁止转载,违者必究!