本篇文章带大家探索一下Node中的堆内存分配,深入了解一下Node.js中的内存限制,希望对大家有所帮助!
在本篇文章中,我将探索一下Node中的堆内存分配,然后试试看把内存提高到硬件能承受的极限。然后我们将找到一些实用的方法来监控 Node 的进程以调试内存相关问题。
OK,准备完成就发车!
大家可以在仓库拉一下相关代码 clone the code from my GitHub:
https://github.com/beautifulcoder/node-memory-limitations
V8 垃圾回收简介
首先,简单介绍一下V8垃圾回收器。内存的存储分配方式是堆(heap),堆被分为几个世代(generational)区域。 对象在它的生命周期中随着年龄的变化,它所属的世代也有所不同。
世代中分为年轻一代和老一代,而年轻的一代还分为了新生代和中间代。随着对象在垃圾回收中幸存下来,它们也会加入老一代。
世代假说的基本原则是大多数对象都是年轻的。V8 垃圾回收器基于这一点,只提升在垃圾回收中幸存下来的对象。随着对象被复制到相邻区域,它们最终会进入老一代。
在Nodejs中内存消耗主要分为三个方面:
- 代码-代码执行时所在的位置
- 调用栈-用于存放具有原始类型(数字,字符串或布尔值)的函数和局部变量
- 堆内存
堆内存是我们今天的主要关注点。 现在您对垃圾回收器有了