gpt4 book ai didi

node.js - RSS 和堆有什么区别?

转载 作者:搜寻专家 更新时间:2023-10-31 22:30:15 46 4
gpt4 key购买 nike

在 Node.js 的上下文中,我经常会提到 RSS 内存。 Wikipedia article on RSS非常简洁,我仍然不确定它与堆内存有何不同。是堆+栈吗?有人可以像我 5 岁那样向我解释吗?

最佳答案

操作系统为进程分配内存以供其运行。在现代的 32 位和 64 位系统上,这个内存空间看起来像一个可以寻址的所有可能内存地址的广阔领域。实际上,操作系统对进程“说谎”,并且通常可以仅使用进程可能处理的部分内存来支持这一 promise 。其余的是“虚拟的”。

由于 CPU 只能在 RAM 中的数据和代码上执行,因此操作系统与 CPU 一起跟踪程序正在使用的内存在 RAM 中,以及在虚拟磁盘中保存到磁盘上的特殊文件中的内容RAM(即页面文件/交换文件)。 RAM 中的内容称为“驻留”或“工作”集。

作为开发人员,了解这一点很重要,因为访问已经在 RAM 中的内存所花费的时间比操作系统必须首先将内存从磁盘加载到 RAM 中快很多数量级。设计保留关键数据的程序比不关心如何分配和访问内存的程序具有更高的性能特征。

堆是操作系统提供给进程的广泛开放内存的分区,组织成 data structure bearing the same name .该流程在执行时使用此组织来一次仅访问(并跟踪以供以后发布)小块。例如,如果进程想要存储一个整数数组,它需要一 block 内存,其字节数等于元素数乘以整数的大小。

此分区高于操作系统对交换所做的操作。我访问堆以在运行时为我的对象和数据结构存储内存字节分配,但是这个堆分配仍然存在于操作系统给我的内存中,它以 4096 字节的“页面”的形式查看,可以移动从磁盘来回。

栈是操作系统赋予进程的另一种特殊数据结构,但不同的是,它一次获取所有栈,当进程按顺序将项目放入栈中时,它递增(或递减)一个特殊的指针(通常是一个特殊的 CPU 寄存器)来跟踪它在这个堆栈中的位置。在更高层次上,每个线程都跟踪堆栈以及指针在该堆栈中的位置。局部变量、函数参数和返回指针都存储在这里,当进程执行以跟踪这些东西时,指针会在此内存上递增和递减。

关于node.js - RSS 和堆有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17381502/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com