Node GC

296 阅读1分钟

这是我参与更文挑战的第5天,活动详情查看: 更文挑战

为什么是垃圾收集器?

过去,当您编写程序时,您会做一些奇怪的事情,例如 malloc 或 free 来管理程序的内存。 在现代语言中,垃圾收集器 (GC) 会为您处理所有这些。使用 V8 进行 GC 并执行所有 javascript 代码的 NodeJS 也是如此。

清楚地了解 GC 背后的机制可以帮助您避免最终开发人员的噩梦;内存泄漏。此外,GC 监控可以帮助您优化您的应用。

为什么要关注 GC 指标?

由于我们的基础设施支持的大量流量(每天数十亿个事件/请求……不是开玩笑!),我们在性能、可用​​性和可扩展性方面存在很多问题。在这种情况下,Web 开发的每个方面都很重要,每个决定都可能对我们的业务产生重大影响。 大多数时候,在处理低流量 API 或项目时,我们没有意识到我们可以做多少调整或改进。另一方面,当流量增加时,之前的所有疏忽都会付出高昂的代价。

2009 年,亚马逊发现每 100 毫秒的延迟会使他们的销售额损失 1%。

因此,通过对 GC 机制的良好理解以及对其指标的良好监控,可以帮助您构建更健壮的应用程序,尤其是对于高流量级别的项目。

GC算法

垃圾收集器不一定每次都以相同的方式清理内存。V8 有两种主要算法:Scavenge 和 Mark/Sweep/Compact。