Chrome / Javascript内存泄漏在调试模式下无法显示

时间:2014-01-21 08:34:00

标签: javascript angularjs memory-leaks

我正在研究一个大型的AngularJS应用程序,当我们在不同的控制器之间来回切换时,它会出现内存泄漏。更确切地说,我们在屏幕左侧有一个菜单,菜单选项$ route到不同的.html部分(反过来,实例化不同的控制器)。

举一个例子,假设菜单选项A导致实例化ControllerA的partialA.html,菜单选项B导致实例化ControllerB的partialB.html。 当用户在菜单选项A和B之间来回点击(依次构建和解构A和B控制器)时,我们可以从Chrome的“Profiles / Take Snapshot”中看到内存使用量不断增加。

根据互联网上各种指南的建议,我接着进行了同样的测试,但这一次,我使用了...来生成Chrome。

bash$ google-chrome --js-flags="--noopt --nouse-ic --nocrankshaft"

...内存泄漏现在已经消失 - 内存使用量保持不变。

如果我的理解是正确的,这意味着泄漏不是因为我们的代码,而是因为Chrome的V8引擎泄漏了与优化相关的资源。

现在,我希望我可以对我的老板说,但很明显,当Chrome的“黑色窗口”由于堆耗尽而出现时,假设这是我的代码错误。

我该怎么办?有什么建议吗?

编辑:我还查了一下Firefox。在菜单选项A和B之间进行10次往返后,Firefox“about:memory”窗口显示在“Free memory / GC”,“Free memory / Minimize memory usage”和“Measure”之后,js-main-runtime -gc-heap-committed和js-main-runtime保持不变。因此,它肯定与Chrome有关(更确切地说,与V8相关)。

0 个答案:

没有答案