Javascript V8';什么是大对象空间?

Javascript V8';什么是大对象空间?,javascript,node.js,memory,v8,Javascript,Node.js,Memory,V8,正如标题所说,我试图找出V8的大对象空间在哪里。我在Node JS中做了一些实验,将相当大的对象(+50mb)加载到内存中。据我所知,这些对象应该直接存储到大对象空间中。但是,process.memoryUsage()没有显示任何存储这些对象的迹象。但这些物体肯定在某处。。。那么,如果不在进程的堆中,那么大的对象空间在哪里呢 在《我偶然发现》一书中,它写道: 大型对象(>Page::kMaxRegularHeapObjectSize)被分配并 由大对象空间管理。从操作系统分配一个大对象 具有额外

正如标题所说,我试图找出V8的大对象空间在哪里。我在Node JS中做了一些实验,将相当大的对象(+50mb)加载到内存中。据我所知,这些对象应该直接存储到大对象空间中。但是,
process.memoryUsage()
没有显示任何存储这些对象的迹象。但这些物体肯定在某处。。。那么,如果不在进程的堆中,那么大的对象空间在哪里呢

在《我偶然发现》一书中,它写道:

大型对象(>Page::kMaxRegularHeapObjectSize)被分配并 由大对象空间管理。从操作系统分配一个大对象 具有额外填充字节的堆(页面::kPageSize+ 页面::kObjectStartOffset)。一个大的物体总是从一开始 页面::kObjectStartOffset到页面。大型对象在移动过程中不会移动 垃圾收集

所以我想知道:

  • 它从操作系统的堆中分配大对象意味着什么?据我所知,堆绑定到任务,我不明白V8如何将内存存储到一个不是自己的堆中,更多的是操作系统的堆。我一定是弄错了,请纠正我
  • 这就是我的NodeJS进程显示正常内存消耗的原因吗
谢谢大家!

它从操作系统的堆中分配大对象意味着什么

它正在从操作系统请求内存

V8的大对象空间位于何处

在进程(堆)内存中,就像所有其他空间一样

我在NodeJS中做了一些实验


如果你提供更多细节,我可以更好地猜测可能发生了什么。也许你用的是打字机?这些是专门处理的,它们的备份存储(超过一定大小)不存储在托管堆上。

这里是node.js中不同类型存储的有用概述:这里是实际源代码中的描述:。嘿!我执行了一些测试,通过http将大型文件传递给运行在Hapi上的NodeJS服务器。我无法检测到存储在内存中的文件,尽管它们被正确地发送和接收。我再次执行了这个实验,这次没有使用中间件,我成功地检测到了堆中存储的文件!也许Hapi做了一些奇怪的事情,或者我没有相应地执行测试(这是最有可能的情况)。谢谢你的澄清,这就是我想要的答案!