Chrome/Javascript内存泄漏,不会';t在调试模式下显示
我正在开发一个大型AngularJS应用程序,当我们在不同的控制器之间来回切换时,它会出现内存泄漏。更准确地说,我们在屏幕左侧有一个菜单,菜单选项$route To differentChrome/Javascript内存泄漏,不会';t在调试模式下显示,javascript,angularjs,memory-leaks,Javascript,Angularjs,Memory Leaks,我正在开发一个大型AngularJS应用程序,当我们在不同的控制器之间来回切换时,它会出现内存泄漏。更准确地说,我们在屏幕左侧有一个菜单,菜单选项$route To different.htmlpartials(这反过来又实例化了不同的控制器) 举个例子,假设菜单选项A指向实例化ControllerA的partialA.html,菜单选项B指向实例化ControllerB的partialB.html。 当用户在菜单选项A和B之间来回点击(依次构造和解构A和B控制器)时,我们可以从Chrome的“
.html
partials(这反过来又实例化了不同的控制器)
举个例子,假设菜单选项A指向实例化ControllerA的partialA.html,菜单选项B指向实例化ControllerB的partialB.html。
当用户在菜单选项A和B之间来回点击(依次构造和解构A和B控制器)时,我们可以从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相关)。您所描述的问题正在解决中。看来您唯一的选择是通过主演该问题来通知Chromium团队您正遭受此问题的困扰,如果可以的话,通过评论提供有关该问题的更多信息。@stevuu:我明白了。。。不幸的是,我不能真正提交关于这个问题的bug报告,因为演示它需要大量的代码(控制器包含网格,其中填充了JBOSS内部运行的异步web服务,等等)。至少我现在有一个关于这个问题的链接-谢谢。