Javascript中本机内存和堆内存的区别解释

kni*_*ian 5 javascript memory-management google-chrome

我正在调试一个使用过多内存的 Javascript 应用程序。在 Heap Profiler 中,它显示大约有 300MB,但根据 Chrome 的任务管理器,它总共使用了大约 950MB,其中有 40MB 的“Javascript 内存”。

基于这个问题,任务管理器和堆分析器之间的 650MB 差异似乎是由于本机内存造成的:

Chrome 堆快照 - 为什么它不显示分配的所有内存?

然而,我无法弄清楚什么是“本机内存”,并且谷歌搜索也没有帮助。哪些类型的内容会进入本机内存,以及我将如何调试使用如此多本机内存的内容?

可能的重复项(全部未答复):

堆分析器的报告与任务管理器的报告:该相信谁?

Chrome任务管理器和内存时间线中显示的内存使用情况存在巨大差异

ikr*_*bbe 0

我不会为此付出努力,但我假设本机内存是 chrome 为 javascript 任务保留的整个内存片。这就是它显示在任务管理器中的原因。另一方面,堆内存包含由 javascript 任务分配的所有对象。当这样的对象不再有引用时,垃圾收集器可能会将其从堆中删除。如果您的 JavaScript 任务收集越来越多的堆,您的代码中可能会出现泄漏。堆分析器可以支持您查找此类内存泄漏,但一般来说,在编写任何代码时请注意清理对所有对象的引用。