我们正在使用ZK开发一个单页 Web 应用程序,该应用程序不断与服务器通信并更新其部分屏幕。更新频率可达 1 秒。在这些更新期间,对大量JS对象的引用会丢失,这些对象最终必须由垃圾收集器清理。
据我们所知,Chrome 只在非活动标签上运行其垃圾收集器。这对我们来说是个问题,因为应用程序的选项卡通常是活动的并且几乎从不刷新,因此JS对象永远不会被收集。如果保持活动状态足够长的时间,该选项卡最终会崩溃(Aww Snap消息)。
我们需要手动启动垃圾收集。到目前为止,我们已经尝试使用--js-flags="--expose-gc"
和 running运行 Chrome gc()
,但它会引发异常:
ReferenceError: gc is not defined
这不会在 Firefox 上发生——内存使用或多或少是一个常数。
强制刷新页面不是一种选择。
我们将不胜感激任何和所有的建议。
编辑:我们已经尝试在 Chrome版本window.gc()
和gc()
23.0.1271.97 m
25.0.1364.2 dev-m