当前位置: 首页 > 面试题库 >

nodejs内存不足

司徒宇
2023-03-14
问题内容

我今天遇到一个奇怪的问题。对于其他人来说,这可能是一个简单的答案,但这让我感到困惑。为什么下面的代码会导致内存错误?

var cur = 167772160;
var bcast = 184549375;
var addresses = [];
while (cur <= bcast){
  cur += 1;
  addresses.push(cur);
}
addresses.length 
addresses // memory goes from a few megs to over a gig in seconds when trying to print this

我得到了这两个错误之一…第一个是在节点的解释器中运行此代码时,第二个是通过nodeunit运行它时:

严重错误:CALL_AND_RETRY_2分配失败-内存不足

严重错误:JS分配失败-内存不足


问题答案:

当我尝试访问阵列时会发生这种情况。但是获取长度却没有。

> var cur = 167772160;
> var bcast = 184549375;
> var addresses = [];
> while (cur <= bcast){
...   cur += 1;
...   addresses.push(cur);
... }
16777216
> addresses.length 
16777216
> addresses
FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory


 类似资料:
  • 我有一个这样的静态ExpressJS服务器: 当我启动服务器时,它使用20MB的v8堆。如果我每秒重新加载一个页面,则使用的堆会不断增长。4小时后,使用的v8堆将达到40MB。v8堆的总容量达到80MB,RSS(进程使用的总内存)达到130MB。 为什么这个简单而静态的服务器使用这么多内存?这似乎是内存泄漏。如果我不停止页面重新加载,使用的内存会继续增长。 如果像这样一个简单的静态服务器使用了太多

  • 我正在使用Lambda(nodeJS)查询noSQL数据(dynamo db)。 null 我犯了错误: 42676 ms:标记-扫描804.1(954.3)->802.7(954.3)MB,1803.0/0.0ms(标记开始后32步+246.3ms,最大步35.7ms)[分配失败][请求旧空间中的GC]。44415 ms:标记-扫描802.7(954.3)->802.7(954.3)MB,173

  • 我正在努力解决古老的字谜问题。多亏了许多教程,我能够迭代一组字符串,递归地找到所有的排列,然后将它们与英语单词列表进行比较。我发现的问题是,在大约三个单词之后(通常是关于“变形”之类的东西),我会得到一个OutOfMemory错误。我试着把我的批分成小的集合,因为它似乎是消耗我所有内存的递归部分。但即使只是“变形”也把它锁起来了... 编辑:根据出色的反馈,我已经将生成器从排列更改为工作查找: 它

  • 问题内容: 在服务器启动时,将2GB(大约)数据从mongodb导出到Redis,然后显示错误消息。 然后使用此命令启动服务器并正常运行。但是需要在nodejs applicaton中进行配置,以便节点服务器始终以4gb内存启动。请帮我解决这个问题?谢谢。 问题答案: 其中 SomeScript 是要使用节点执行的文件名。

  • 问题内容: 今天,我运行了用于文件系统索引编制的脚本,以刷新RAID文件索引,并在4小时后崩溃并出现以下错误: 服务器配备16GB RAM和24GB SSD交换。我非常怀疑我的脚本是否超过了36gb的内存。至少不应该 脚本使用文件元数据(修改日期,权限等,无大数据)创建存储为对象数组的文件索引 过去,我曾经用此脚本经历过奇怪的节点问题,这使我不得不这样做。在处理诸如String之类的大文件时,由于