WebKit 中是否有 JavaScript 控制台限制?

Is there a JavaScript console limit in WebKit?

我想限制 JavaScript / Web Inspector 控制台中的内存或条目数。

它是否已经受到某种限制(可用和可访问内存除外)?

如果不是,是否可以只清除控制台日志中最旧的条目,同时保留较新的条目,例如 console.clear(10000)

在任何 JavaScript 引擎中是否有类似限制或选择性 clear() 的东西?

问题是我想在嵌入式 Web 视图中的单页应用程序中记录调试信息,但不想以这种方式不断泄漏内存。

虽然一些 JavaScript 开发人员工具可能会实施内部限制,但 WebKit 的 Web Inspector 显然不会,至少它不会向其公开任何文档化的接口。

所以基本上有两个可行的解决方案(除了打补丁WebKit或使用支持限制的工具),Cerbrus and Jan Dvorak也提到了。

  • 创建各种 console 方法的代理以缓冲任何日志输出并仅根据请求转储,并限制内部缓冲区。 一个简单的环形缓冲区不是很快,所以另一种方法是使用两个缓冲区,旧的缓冲区被丢弃并在当前变满时被覆盖。 使用缓冲区的缺点是您不能立即扩展对象,而只能在第一次访问时扩展,如果它们被覆盖,可能会丢失重要的调试数据(Qt 5 的控制台扩展简单对象和数组 during logging ).

  • 定期清除控制台以限制内存使用。 但是,控制台可能会在错误的时间被清除。