我正在优化我的大Angular App
。当我发现一个Google DevTools
非常好发现问题。由于我刚刚开始学习DevTools
,我对内存泄漏很困惑。
当我在应用程序中的不同页面之间来回移动时,配置文件堆快照大小一次又一次地增加,因此我认为有一些对象没有被 GC 清理,这就是为什么我的应用程序在一段时间后变得缓慢,那么如何解决这。请帮忙。
Note
这是我使用DevTools的理解,如有错误请指正。欢迎其他建议。
到目前为止我所使用的
-
AngularOnce https://github.com/tadeuszwojcik/angular-once在需要时减少值班的指令。
- QuickList 指令替换 ng-repeat 为快速重复 https://github.com/allaud/quick-ng-repeat.
-
InView https://github.com/thenikso/angular-inview指令,为了处理大列表,所以我要删除不在视口中的 DOM。
- 延迟加载方法来自ng无限滚动 http://binarymuse.github.io/ngInfiniteScroll/指示。
-
删除绑定以避免内存泄漏,使用范围$销毁() http://docs.angularjs.org/api/ng/type/%24rootScope.Scope#%24destroy Method.
Note:
Angular 中最有可能造成内存泄漏的罪魁祸首是 JQuery
您的指示。如果您在指令中附加事件侦听器
使用 JQuery 插件,后者将保留对 DOM 的引用
即使 Angular 删除了自己对 DOM 的引用,这意味着
它永远不会被浏览器垃圾收集,反过来
方法 ”分离的 DOM 树“在你的记忆里
在您的指令中,请保持解除 jQuery 事件绑定的练习。
$destory 方法,可用于在执行之前清理 DOM 绑定
元素从 DOM 中删除。
$scope.$on("$destroy",function() {
$( window ).off( "resize.Viewport" );
});
-
不要忘记取消 $destroy 事件中的 $timeout 计时器
AngularJS
$scope.$on("$destroy",function( event ) {
$timeout.cancel( timer );
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)