我一次添加20 * 10个项目来重复并一次删除20 * 10个项目来回收内存空间但是在删除节点后我没有看到内存回收。为什么记忆不能回收?我做错了吗?
angular.module('myApp', []).
controller('MyCtrl',function($scope) {
$scope.items = ["http://fc06.deviantart.net/fs42/f/2009/073/e/d/Free_red_panda_icon_100x100_by_SuperTuffPinkPuff.png"];
$scope.remove = function(item) {
console.log($scope.items.length)
for(var a = 0; a < 20; a++) {
$scope.items.shift($scope.items.length-1);
}
};
$scope.add = function(item) {
for(var a = 0; a < 20; a++) {
$scope.items.push(item='http://fc06.deviantart.net/fs42/f/2009/073/e/d/Free_red_panda_icon_100x100_by_SuperTuffPinkPuff.png');
}
};
});
更新 - 我使用的是单个FireFox和Chrome实例,同样的事情发生了。意味着内存未在任务管理器中回收。但是,浏览器Profiler是回收的,为什么呢?
删除DOM节点后,This guy能够回收内存,我不知道为什么,因为我也在做同样的事情。
答案 0 :(得分:1)
好的,我找到了记忆仍然存在的原因。当您使用shift从数组中删除项时,它将返回您已删除的项,因此您必须将其设置为null。我没有这样做。
$scope.remove = function(item) {
for(var a = 0; a < 20; a++) {
var removedItem = $scope.items.shift($scope.items.length-1);
removedItem = null;
}
};