搞不定 NodeJS 内存泄漏?先从了解垃圾回收开始

本文介绍了NodeJS内存管理的基础知识,包括常驻集大小、栈和堆的概念,以及垃圾回收的工作原理。通过实例展示了如何跟踪对象在堆中的状态,解释了年轻代和老年代的内存分配策略,如Scavenge和Mark-Sweep/Mark-Compact算法,帮助开发者理解内存泄漏的原因。
摘要由CSDN通过智能技术生成

搞不定 NodeJS 内存泄漏?先从了解垃圾回收开始

垃圾回收是如何工作的

==========

要搞清楚垃圾回收是如何工作的,需要先了解一些基本概念。

基本概念

====

  • 常驻集大小(resident set size):NodeJS 进程运行时占据的内存大小,通常包含:代码、栈和堆。

  • 栈(stack):包含原始类型数据和指向对象的引用数据。栈中保存着局部变量和指向堆上对象的指针或定义应用程序控制流的指针(比如函数调用等)。下面代码中,a 和 b 都保存在栈中。function add (a, b) { return a + b } add(4, 5)

  • 堆(heap):存放引用类型数据,比如对象、字符串、闭包等。下面代码中,创建的 Car 对象会被保存在堆中。function Car (opts) { this.name = opts.name } const LightningMcQueen = new Car({name: ‘Lightning McQueen’}) 对象创建后,堆内存状态如下:现在我们添加更多的对象:const SallyCarrera = new Car({name: ‘Sally Carrera’}) const Mater =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值