跳到主要内容
CNode

为何以下代码只会占满机器的内存,但不会溢出

问答
Wwangchaoduo发布于 8 年前最后回复 8 年前
450710

为何以下代码只会占满机器的内存,但不会溢出,那当内存满了之后,新的new出来的Buffer放在哪里呢?

let arr = [];
while(true)
  arr.push(new Buffer(1000));
查看回复

回复 (4)

C
CoderIvan#48 年前

官网API

Prior to Node.js 8.0.0, the memory allocated for such Buffer instances is not initialized and can contain sensitive data.

看是不是这个原因

L
lovegnep#38 年前

个人理解: 每次分配的内存都是虚拟内存,64位系统,虚拟内存最大为2^64-1,所以申请内存理论上是可以超过物理内存大小的。 由于你的代码只申请不使用,所以操作系统是不会分配物理内存给你的。只在你使用该段内存的时候操作系统才会分配物理内存给你。

D
daileimail#28 年前

堆和栈了解一下

来自酷炫的 CNodeMD

N
nodepaladin#18 年前

Buffer是不占v8内存的。新new的buffer应该是放在了虚拟内存里。

来自酷炫的 CNodeMD

参与回复

登录后即可参与回复。登录