在Node.js中,数据何时存储在堆上?
在C语言中,您显式地请求和管理堆上的内存,因此与堆的交互是明确定义的。如何在Node.js中对此进行推理 分问题:在Node.js中,数据何时存储在堆上?,node.js,memory-management,heap-memory,stack-memory,Node.js,Memory Management,Heap Memory,Stack Memory,在C语言中,您显式地请求和管理堆上的内存,因此与堆的交互是明确定义的。如何在Node.js中对此进行推理 分问题: 函数存储在何处/如何存储 是否有某些对象/原语总是存储在堆上?(例如缓冲器) 数据是否从堆栈迁移到堆?什么时候 请参考有关此主题的优秀资源,谢谢。您不关心堆栈与堆,也不关心释放内存。它会自动发生,因为Node.js提供了一个精确的跟踪垃圾收集器。一些数据存储在GC堆中。有些数据在堆栈上。您通常无法判断,因为这取决于JIT编译器在运行时执行的优化。分析工具可能提供特定于应用程序的
- 函数存储在何处/如何存储李>
- 是否有某些对象/原语总是存储在堆上?(例如缓冲器)
- 数据是否从堆栈迁移到堆?什么时候
请参考有关此主题的优秀资源,谢谢。您不关心堆栈与堆,也不关心释放内存。它会自动发生,因为Node.js提供了一个精确的跟踪垃圾收集器。一些数据存储在GC堆中。有些数据在堆栈上。您通常无法判断,因为这取决于JIT编译器在运行时执行的优化。分析工具可能提供特定于应用程序的洞察力 对于内存以外的资源(如文件和套接字),请最后使用
:
var file = open(…);
try {
…
} finally {
close(file);
}
对这个问题的回答肯定会有助于在开发过程中定位可能的内存泄漏。好问题。我想你想说的是“你不应该关心堆栈和堆”。。。显然有些人很关心,否则这不是问题。@rightfold我更感兴趣的是概念化运行时如何做出这些决策,以便在开发过程中理解/承认它。显然,您可以将其视为一个黑盒,但我认为了解这一点对大多数Node.js开发人员应该很有用。