CDP 出站保留复现¶
从工作树根目录:
该脚本打包当前的响应写入器,并连接真实的回环 WebSocket。读取器暂停,同时生成器最多发送 128 MiB。脚本不会启动任何 Electron 应用或 PTY,并会关闭所有套接字。before.json 记录针对无界写入器的相同实验;after.json 记录修复后的写入器。
修复前,128 MiB 的生成负载在 WebSocket 缓冲区中留下 133,177,280 字节,并且每个采样点都呈现大致线性增长。修复后的写入器使用现有的出站队列:8 MiB 套接字软阈值、64 MiB 保留队列上限以及 4,096 个排队帧上限。停滞的连接在溢出时终止并释放其队列。套接字阈值可能超出一帧;在空闲连接上,单个大型回复仍然被允许,以保留大型 PDF/截图响应。这限制了累积的积压,而不是构建单个响应所需的分配,或跨任意多个浏览器页面的总量。
单元测试还覆盖按顺序排空完整突发数据的读取器、请求/会话关联、关闭/替换时的队列释放,以及 65 MiB 的正常回复。调试器事件和命令响应共享此写入器。
当 CDP 自动化客户端停止读取时,这确立了 Electron 主进程中的保留机制。#19831 和 #19768 均未确立该前提条件,因此它不是任一事件的已确认原因。RSS 反映 GC/分配器时序;排队字节数是直接测量值。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 orca48/orca