本篇文章帶大家探索一下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中內存消耗主要分為三個方面:
- 代碼-代碼執行時所在的位置
- 調用棧-用于存放具有原始類型(數字,字符串或布爾值)的函數和局部變量
- 堆內存
堆內存是我們今天的主要關注點。 現在您對垃圾回收器有了