在 Node.js 中,数据何时存储在堆中?
Posted
技术标签:
【中文标题】在 Node.js 中,数据何时存储在堆中?【英文标题】:In Node.js, when is data stored on the heap? 【发布时间】:2015-09-21 12:45:34 【问题描述】:在 C 中,您明确要求并管理堆上的内存,因此与堆的交互是明确定义/明显的。你是如何在 Node.js 中推理的?
子问题:
函数存储在哪里/如何存储? 是否有某些对象/原语总是存储在堆上? (例如缓冲区) 数据是否从堆栈迁移到堆?什么时候?也非常感谢您提供有关此主题的优质资源的参考,谢谢。
【问题讨论】:
对此的回答肯定有助于在开发过程中定位可能的内存泄漏。好问题。 【参考方案1】:您不关心堆栈与堆,也不关心释放内存。因为 Node.js 提供了一个精确的跟踪垃圾收集器,所以它会自动发生。一些数据存储在 GC 堆中。一些数据在堆栈上。您通常无法分辨,因为它取决于 JIT 编译器在运行时执行的优化。分析工具可能会提供特定于应用程序的洞察力。
对于内存以外的资源(例如文件和套接字),使用finally
:
var file = open(…);
try
…
finally
close(file);
【讨论】:
我认为你的意思是“你不应该关心堆栈与堆”......显然有些人确实关心,否则这不会是问题。 @rightfold 我对概念化运行时如何做出这些决定以便在开发过程中理解/承认它更感兴趣。显然你可以把它当作一个黑匣子,但我认为理解这一点对大多数 Node.js 开发者来说应该是有用的。以上是关于在 Node.js 中,数据何时存储在堆中?的主要内容,如果未能解决你的问题,请参考以下文章