【发布时间】:2018-05-26 01:59:25
【问题描述】:
我有一个奇怪的错误,它占用了大量内存并不断导致我的服务器崩溃。
每 30 秒我将一个值保存到一个数组中:
historicalValues.push( valueToSave )
当 valueToSave = 1 时,应用程序不会因此而大幅增加内存。
但是当 valueToSave = undefined 或 null 时,应用程序突然在 2 分钟内增加了 90 MB?
有人知道是什么原因造成的吗?我很确定空变量不会比数字占用更多的内存。它是否与它强制数组必须切换到效率较低的对象类型才能支持多种不同类型的对象的条目有关?以为javascript不关心这样的东西。
【问题讨论】:
-
it forces the array to have to switch to a less efficient object type to be able to support entries of multiple different types of objects? Thought javascript didn't care about stuff like that.你会感到惊讶:v8project.blogspot.com.au/2017/09/elements-kinds-in-v8.html -
内存消耗是否保持以这种速度增加,还是一次性的?
-
是什么让你认为 2 分钟内的内存增加来自 4 次数组推送操作?如果检查并将undefined或null替换为1,是否不会发生内存增加?
-
为什么服务器会因使用 90 mb 而崩溃?
标签: javascript arrays node.js memory undefined