垃圾收集需要很长时间[如何调试收集的内容?]

时间:2017-12-21 15:05:28

标签: javascript garbage-collection

我遇到一个问题,即主要的javascript线程因垃圾回收而被阻止。 (见下面的截图)。用例是我从具有oboe.js的服务器流式传输JSON,处理一些节点,并将节点放在WebGl渲染器中并在流式传输时渲染它们。这种方法效果很好,除了垃圾收集器由于收集9mb的块而导致2fps,需要大约500ms。

问题在于我不知道收集的内容以及如何防止收集内容。所以我的问题有两个:

  • 如何减少垃圾收集器收集的块大小或推迟垃圾收集器运行的时刻?
  • 如何调试正在收集的内容?

正在发生的事情的片段:

Performance Chart Chrome Dev Tools

1 个答案:

答案 0 :(得分:0)

毕竟我找到了这个问题。有一个解析过程会吐出一个变量,这个变量是一个非常复杂的嵌套对象。

Uncaught Function ContextActivationManager_getAppContextAsync call failed. ErrorCode is -2, exception: Failed origin check

from outlook-web-16.01.js

在进程结果阶段之后,结果变量被标记为垃圾收集,它立即执行。我将结果缓存在临时变量中并稍后“手动”删除它,这解决了问题。