javascript - 当ui-router改变状态时, Angular Controller 范围不会破坏变量

标签 javascript angularjs garbage-collection angular-ui-router heap-memory

在我的应用程序中,我注意到当我更改状态时,$scope 变量仍然存在并超时登录。为什么是这样?我怎样才能完全删除它,使其不占用堆内存?

意思是,在 Controller 状态改变之后

$scope.$on("$destroy",function(){
    setTimeout(function(){
        console.log($scope.whatever);
    },10000);
});

$scope.whatever 仍然记录意味着它从未被删除!到底是怎么回事?我以为销毁事件也会销毁范围内的所有内容?

最佳答案

这样做的原因是,通过 console.logging 超时时的 $scope 变量,我正在引用它,因此 javascript 将避免范围内的垃圾收集,直到它执行并且不再被引用,javascript 中没有弱引用就像在 java 中一样。

应该不惜一切代价避免这种情况,因为它会在 angular 中造成大量内存泄漏!当作用域被销毁时,确保在任何地方都没有引用变量!

关于javascript - 当ui-router改变状态时, Angular Controller 范围不会破坏变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37177059/

相关文章:

javascript - couchDB designDoc 开发流程和版本控制

java - Android 内存泄漏在设备上,而不是在模拟器上

javascript - Angular : How to force recompile directive?

java - Hadoop上下文中Java的内存问题

java - j2ee应用程序中涉及循环引用和数组的内存泄漏

javascript - window.alert 后的代码在其他对话框被阻止时不执行

javascript - 从 javascript 更改选择框 (html) 的值

javascript - 不使用对象的引用(javascript)

android - Phonegap Onsen UI 应用在启动前显示代码

javascript - 更改 AngularJS 中 $scope 变量中文本的字体颜色