angularjs – 如何减少/删除Angular应用程序中的内存泄漏

前端之家收集整理的这篇文章主要介绍了angularjs – 如何减少/删除Angular应用程序中的内存泄漏前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在优化我的大型角应用程序。因为我发现一个Google DevTools是非常好的检测问题。当我刚开始学习DevTools,我很困惑的内存泄漏。

当我回到我的应用程序中的不同页面,Profile堆快照大小一次又一次增加,所以我认为有一些对象,没有被GC清理,这就是为什么我的应用程序在一段时间后变慢,如何解决这个。请帮忙。

注意

这是我理解使用DevTools,请纠正我,如果我错了。欢迎其他建议。

直到现在我使用了

> AngularOnce指令,以便在需要时减少手表。
> QuickList指令,将ng-repeat替换为quick-ng-repeat
> InView指令,处理大列表,所以我删除不在视口中的DOM。
>从ngInfiniteScroll指令的延迟加载方法

>删除绑定以避免内存泄漏,使用范围
$destroy()方法

注意:

The most likely culprit of memory leak in Angular is JQuery used in
your directives. If you attach an event-listener in your directive
using a JQuery plugin,the latter would keep a reference to your DOM
even after Angular deletes its own reference to the DOM,which means
it would never be garbage-collected by the browser,which in turn
means “Detached DOM tree” in your memory

在您的指令中保持解除绑定jQuery事件的实践。
$ destory可以用来清除DOM绑定之前的方法
元素从DOM中删除

$scope.$on("$destroy",function() {
    $( window ).off( "resize.Viewport" );
 });

>不要忘记取消$ timeout定时器在$ destroy事件中
AngularJS

$scope.$on("$destroy",function( event ) {
    $timeout.cancel( timer );
});
原文链接:https://www.f2er.com/angularjs/145655.html

猜你在找的Angularjs相关文章