问题描述
这个问题是关于内存分配的。我在此示例中使用Array,因为它复制了与第三方库中数据库代码相关的另一个更复杂问题的行为。我需要了解为什么在“容器中的节点”环境中内存分配行为会以这种方式改变。
我正在Docker桌面社区(2.3.0.5,Windows)容器中运行node.js(12.18.4,lts-stretch)。该容器的内存限制为2GB。 (但是,无论我分配给Docker多少内存,我都会看到相同的行为。)
在节点中,此语句按预期工作:
var a = Array(32 * 1024 * 1024).fill(0);
但是,执行该语句时,节点开始无限制地分配内存,就像它陷入了无限循环一样:
var a = Array(32 * 1024 * 1024 + 1).fill(0);
从Windows PowerShell提示符运行node.exe时,我看不到上述行为-仅在运行节点容器(https://hub.docker.com/_/node)时。
为什么在容器中运行节点时内存分配不能以32MB +1个元素正常工作?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)