Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Node.js中,数据何时存储在堆上?_Node.js_Memory Management_Heap Memory_Stack Memory - Fatal编程技术网

在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编译器在运行时执行的优化。分析工具可能提供特定于应用程序的

在C语言中,您显式地请求和管理堆上的内存,因此与堆的交互是明确定义的。如何在Node.js中对此进行推理

分问题:

  • 函数存储在何处/如何存储
  • 是否有某些对象/原语总是存储在堆上?(例如缓冲器)
  • 数据是否从堆栈迁移到堆?什么时候

请参考有关此主题的优秀资源,谢谢。

您不关心堆栈与堆,也不关心释放内存。它会自动发生,因为Node.js提供了一个精确的跟踪垃圾收集器。一些数据存储在GC堆中。有些数据在堆栈上。您通常无法判断,因为这取决于JIT编译器在运行时执行的优化。分析工具可能提供特定于应用程序的洞察力

对于内存以外的资源(如文件和套接字),请最后使用

var file = open(…);
try {
    …
} finally {
    close(file);
}

对这个问题的回答肯定会有助于在开发过程中定位可能的内存泄漏。好问题。我想你想说的是“你不应该关心堆栈和堆”。。。显然有些人很关心,否则这不是问题。@rightfold我更感兴趣的是概念化运行时如何做出这些决策,以便在开发过程中理解/承认它。显然,您可以将其视为一个黑盒,但我认为了解这一点对大多数Node.js开发人员应该很有用。