角js ui网格内存泄漏问题

时间:2015-11-06 12:33:32

标签: javascript angularjs memory-management memory-leaks angular-ui-grid

我正在使用一个使用angular js UI网格的应用程序。但是当我继续使用我的应用程序时,它不断添加内存而不释放dom对象。

我已经创建了一个示例应用程序,我可以重新创建相同的内存泄漏问题。我在一个div中保留了一个按钮(“打开滑块”),点击其中我动态加载包含带有一些数据的UI网格的另一个div。另一个div中有另一个按钮(“关闭滑块”),点击该按钮我可以隐藏UI网格。

以下是我们在调查IE浏览器上的问题时观察到的屏幕截图:

Screen shot showing memory usage when I click on Open slider button to show up the UI grid

Screen show showing no memory released when I click on Close slider button to hide UI grid

因此,正如您在图像2中看到的那样,当我关闭UI网格div时,内存未被释放(如开发人员选项>内存选项卡中所示)。那么,卸载UI网格或以其他任何方式删除取消附加的dom对象后,有没有办法释放内存?

您可以在评论部分找到上述应用程序的插件。

2 个答案:

答案 0 :(得分:0)

我尝试使用Chrome Dev Tools进行plunker剖析,我不得不说我没有发现内存泄漏的迹象。

No leakage found

在这里,您可以看到我尝试执行许多打开和关闭网格,最后释放内存。

此外,我尝试了另一个要求Chrome在每次点击前后执行GC,我得到了这个:

No leakage with GC

在这里你可以看到,在每个周期之后,当我要求GC时,只有少量的内存没有被释放,但它似乎不会随着时间的推移而增长。

答案 1 :(得分:0)

在角度js中处理内存管理的最佳方法是使用“Controller as”语法。

在卸载控制器后,使用控制器的别名会从内存中释放DOM元素。