NodeJS 无限循环内存消耗

2024-01-15

我不知道这是否是 Node 或 V8 的错误,但如果我运行以下代码,节点进程会泄漏内存。 GC 似乎从未启动,并且在几秒钟内它就消耗了 >1GB 的内存。这是意想不到的行为。我错过了什么吗?

这是代码:

for(;;) { console.log(1+1); }

显然,这有点人为的情况,但我可以看到长期运行的进程永远不会释放内存的问题。

编辑:我尝试了 v0.5.10(不稳定)和 v0.4.12(稳定),不稳定版本的表现稍好一些——稳定版本只是停止输出到控制台,但继续消耗内存,而稳定版本继续执行并消耗内存而不会暂停。


您通过从不返回来阻止 node.js 事件循环。

当您向流写入内容时,node.js 会异步执行此操作:它发送写入请求,在流的内部数据结构中对有关已发送请求的信息进行排队,并等待通知其完成的回调。

如果您阻止事件循环,则永远不会调用回调(因为永远不会处理传入事件)并且流中排队的辅助数据结构永远不会被释放。

如果您通过不断地使用 nextTick/setInterval/setTimeout 调度自己的事件来“超载”事件循环,则可能会发生同样的情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NodeJS 无限循环内存消耗 的相关文章

  • 使用 JS 和 HTML 将当前 URL 插入链接

    所以 我已经阅读了类似的内容 但我仍然找不到更适合我正在做的事情的答案 我正在尝试使用 JS 获取当前页面 URL 并将其附加到社交媒体共享链接 如下所示 a href target blank 使用 Javascript 我成功地将当前
  • 当列表包含图像时,React Native FlatList 感觉很慢

    我为 avater 使用 64x64 图像 它的尺寸非常小 通过我的应用程序 滚动时帧率下降至 25 35 fps 如何优化 flatList 图像
  • 为什么 docker build 中的 COPY 未检测到更新

    我在节点应用程序上运行构建 然后使用工件构建 Docker 映像 将源代码移动到位的 COPY 命令没有检测到构建后源文件的更改 它只是使用缓存 Step 9 12 COPY server home nodejs app server gt
  • 仅返回 JavaScript 字符串中最后一个下划线之前的文本

    如果我有一个像这样的字符串 var str Arthropoda Arachnida Zodariidae Habronestes hunti 如何获取最后一个下划线之前的字符串的第一部分 在这种情况下我只想 Arthropoda Arac
  • 无法使用 Node.JS 将 null 值发送到 MySQL 数据库

    我正在尝试发送null使用 Node JS 到我的 MySQL 数据库 con query INSERT INTO Routes routeTrigger VALUES null title test function err result
  • Mocha / Chai Expect.to.throw 未捕获抛出的错误

    我在获取 Chai 时遇到问题expect to throw测试我的 node js 应用程序 测试在抛出的错误上不断失败 但是如果我将测试用例包装在 try 和 catch 中 并对捕获的错误进行断言 它就会起作用 Does expect
  • 带有 socket.io 的 Node.js 服务器可同时处理 50000 个客户端

    我们正在开发一个 Javascript 控件 它应该不断连接 到服务器以接收动画更新 我们计划将这些东西托管在亚马逊云上 场景是这样的 服务器连接到 activemq 队列等待更新 对于每个更新 它都会将其广播到所有连接的客户端 是否可以使
  • 使用西里尔字母的正则表达式

    我有一个用于文本区域字段中字数统计的 jQuery 函数 此外 它排除所有用 三重括号 封闭的单词 它对于拉丁字符效果很好 但对于西里尔字母句子有问题 我认为错误部分与正则表达式有关 field val replace g match b
  • 元素上的 jQuery touchSwipe 事件阻止滚动

    我有一些清单div元素垂直排序 使用jQuery TouchSwipe 插件 https github com mattbryson TouchSwipe Jquery Plugin添加了滑动事件来捕获左右滑动 想法是通过向左或向右滑动来从
  • 所有属性的 JavaScript getter

    长话短说 我现在的情况是想要一个 PHP 风格的 getter 但是是 JavaScript 的 我的 JavaScript 仅在 Firefox 中运行 因此 Mozilla 特定的 JS 对我来说没问题 我能找到的制作 JS gette
  • 与玻璃钢战斗

    我读过有关 FRP 的内容 非常兴奋 它看起来很棒 因此您可以编写更多高级代码 并且一切都更加可组合 等等 然后我尝试用数百个 sloc 从纯 js 到 Bacon 重写我自己的小游戏 我发现 我实际上不是编写高级纯逻辑代码 而是击败了 B
  • 不明白为什么 Chrome/Safari 无法在此处获取 ScrollHeight

    我只是问了一个问题 为什么某些 js 代码不能 100 在 Chrome 和 Safari 中工作 但经过更多故障排除后 我想我发现这是我应该发布的问题 我有一个页面 其中有一个表单 该表单的目标是同一页面上的 iframe iframe
  • 调整发散堆积条形图以使用通用更新模式

    我一直在使用可用的堆积条形图示例here https bl ocks org mbostock b5935342c6d21928111928401e2c8608使用以下代码 var data month Q1 2016 apples 384
  • 不用AJAX,前台同步拖放文件上传?

    我有一个定期的网站
  • 使用 Java 进行 AES 加密并使用 Javascript 进行解密

    我正在制作一个需要基于 Java 的 AES 加密和基于 JavaScript 的解密的应用程序 我使用以下代码作为基本形式进行加密 public class AESencrp private static final String ALG
  • Ruby 数组到 Javascript 数组

    我有一个带有帐户 ID 的 Ruby 数组 我想将帐户 ID 的 Ruby 数组存储在 Javascript 数组中 我想知道最好的方法是什么 另外 当我尝试执行此操作时 Javascript 似乎认为如果只输入一个帐户 ID 则该 ID
  • 如何使用 Browserify 获取 html 模板

    我正在尝试找出一种简单的方法 在脚本中需要 html 模板 然后从 CLI 运行 browserify 假设我想获取一个模板并将其附加到正文中 index js var template require template html docu
  • 谷歌地图通过骨干javascript返回div标签但不显示

    我已经开始使用地理定位 我可以获得坐标等 我想在地图中显示它 但是当我将地图返回到 div 时 什么也没有显示 现在我查看了 div 地图正在返回 但只是不可见 这是有问题的 div 请注意 这似乎只是一个小地图的链接 a style di
  • 1° 夏令时 Java 和 JS 表现出不同的行为

    假设巴西利亚 GMT 0300 夏令时于 21 10 2012 00 00 00 此时时钟应提前一小时 Java new Date 2012 1900 9 21 0 0 0 Sun Oct 21 01 00 00 BRST 2012 Chr
  • 获取不正确的日期,将时间戳转换为新日期

    我正在尝试将时间戳转换为日期 但得到的日期不正确 我正在开发一个使用 Angular 和 Typescript 的项目 我有这样的时间戳 1451642400 2016年1月1日 和1454320800 2016年2月1日 如果我编码 da

随机推荐

  • 调整 ListView 列以适应 WinForms

    我面临列表视图列的调整大小问题 如果你锚 对接listview转普通winform比listview锚点或对接效果好 我的意思是 当 winform 最大化时 listview 将调整大小并适合 winform 但您在其上设计的列不会随 l
  • 复制对象数组,然后修改原始对象而不影响副本

    所以我一直在为这个看似微不足道的问题而绞尽脑汁 我不一定知道要搜索什么 我已经四处寻找解决方案 我需要制作二维数组的副本 该数组由对象 我创建的一个称为 Cell 的类 组成 但是一旦我制作了副本 我就会将该副本存储到哈希映射中 以供稍后参
  • WebSphere 响应缓冲

    我正在向WebSphere 的response getOutputStream 编写一个大型响应 数百Mb 看起来 Web Sphere 总是将整个输出流数据存储在一些内部内存缓冲区中 然后再将其提供给客户端 因此 我的服务器处理 生成数据
  • PHP print_r 仅显示数组而不是纯文本

    我再次寻求帮助 我找到了这个停用词脚本 我基本上从字符串中删除了所有常见单词
  • 有没有办法从 Google Contacts 联系人 ID 获取 Google People API 资源 ID?

    我们将用户的 contactId 存储在数据库中 并在用户从我们的应用程序请求时使用它来获取 编辑 删除联系人 现在 Google Contacts API 即将停用 我们需要使用资源 ID 调用 Google People API 来执行
  • OpenGL ES - 在片段着色器中旋转纹理而不失真

    我正在使用 Android 的 GPUImage 库对位图应用一些效果 本质上 GPUImage接受位图并使用OpenGL ES 将1 x 1立方体渲染到位图大小的帧缓冲区中 用户可以编写自定义片段着色器来控制输出 我正在尝试编写一个片段着
  • 如何在 mongodb 中按周对文档进行分组

    id ObjectId 568b650543712795bf864a45 companyId 55e2d7cfdc8f74d14f5c900f timeStamp ISODate 2014 12 03T18 30 00 000Z id Ob
  • NLog 无法与 MSTest 一起使用,配置应该放在哪里?

    我们最近将测试从 NUnit 迁移到 MSTest 我正在努力让之前通过的测试运行 据我所知 MSTest 无法检测到 NLog 配置 我的 App config 中有 Nlog 配置 这不会导致 NUnit 出现问题 有人有什么想法吗 改
  • Gettext自动评论生成

    我正在使用 gettext 为 php 项目执行 i18n 操作 我想使用自动评论功能 http www gnu org software gettext manual gettext html PO Files在翻译用 id 替换的长短语
  • int* x[n][m] 和 int (*x) [n][m] 有什么区别?

    照我看来int x n m 宣称x是一个指向整数的指针的二维数组 因此分配内存应该像x i j new int正如预期的那样 它工作得很好 现在 如果我将声明更改为 int x n m x i j new int不再有效并导致编译错误 x
  • iOS SpriteKit SKAction 完成调用不起作用/创建奇怪的结果

    我试图让 SKNode 根据命令移动到屏幕上 我设置了以下 SKAction 链 以便 1 节点向上移动并移出屏幕 然后 2 节点向下移动到起始位置 然后 3 开始四处移动 我使用以下代码来尝试实现这一点 SKAction moveUp S
  • Malloc 分配方案

    是的 我正在学习计算机系统课程 我对实现 malloc 的各种分配方案有一些疑问 对于显式列表 如果我使用类似 LIFO 的堆栈实现 malloc 那么拥有指向先前释放的内存的指针的确切目的是什么 比如为什么需要双向链表 单链表不是也能工作
  • 如何使用 jasmine 自定义记者制作失败规格列表并发布到 Slack?

    我正在尝试使用自定义 jasmine 报告器并获取 specDone 函数中所有失败规格的列表 specDone function result if result status failed failedExpectations push
  • 如何在 ggplot 中为地图中的多个图层自定义图例?

    我正在尝试修复我的标题 但在创建它时遇到问题 我想要类 填充 形状限制 颜色 点 颜色 和网格 填充 NA 的标题 我把它们全部放进去aes 但我没有得到预期的结果 有谁能够帮助我 谢谢 library geobr library sf l
  • 旋转 y 轴标签

    我正在尝试旋转 Y 轴的标题 使其处于水平位置 我不希望刻度标签只是 Y 轴标题的水平方向 我必须使用子图 因为我要同时制作多个图 这是下面的脚本 我在其中尝试旋转 Y 轴标题 import matplotlib pyplot as plt
  • Xstream jodatime 本地日期显示

    我正在使用 xstrem 将 jodatime 本地日期序列化为 xml 然而 当输出生成的 xml 时 LocalDate 的格式并不易于阅读 见下文
  • 在 javac 中禁用 StringBuilder 优化

    在 Java 中使用普通字符串连接时 javac 会在可以使用的地方对其进行优化StringBuilder相反 或 Java 5 之前的 StringBuffer 就我而言 关闭所有这些 然后使用 bog 标准 append 方法进行字符串
  • 如何自动调整tinyMCE的大小?

    我有一个设置在 TextArea 上的 TinyMCE 并且我希望该编辑器区域始终占据其父 div 的所有空间 我有一个 JS 函数 可以获取当前空间并将 textarea style height 设置为它 但是当我启用 TinyMCE
  • 在 Android 应用程序中更改 HttpClient 的 OpenSSL 库

    我需要使用自定义 OpenSSL 库Http客户端在我的项目中 我已经编译了libcrypto so and libssl so对于 Android 并将文件放在 jniLibs 文件夹中 应用程序 Heartbleed Scanner 可
  • NodeJS 无限循环内存消耗

    我不知道这是否是 Node 或 V8 的错误 但如果我运行以下代码 节点进程会泄漏内存 GC 似乎从未启动 并且在几秒钟内它就消耗了 gt 1GB 的内存 这是意想不到的行为 我错过了什么吗 这是代码 for console log 1 1