加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 08:37:56 所属栏目:安全 来源:网络整理
导读:我正在优化我的大型角应用程序。因为我发现一个Google DevTools是非常好的检测问题。当我刚开始学习DevTools,我很困惑的内存泄漏。 当我回到我的应用程序中的不同页面,Profile堆快照大小一次又一次增加,所以我认为有一些对象,没有被GC清理,这就是为什么
我正在优化我的大型角应用程序。因为我发现一个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 );
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读