我的angular.js应用程序中有一个似乎是内存泄漏的内容。基本上,该页面包含一个信息表,该表每五秒钟从AJAX调用的JSON编码结果更新。我在这里创建了一个简化的jsfiddle版本:http://jsfiddle.net/alalonde/TtGXW/6/
控制器:
function HostController($scope, $timeout, Data) {
$scope.encoders = Data.load();
$scope.refreshInterval = 5;
$scope.reload = function () {
$scope.encoders = Data.load();
};
$timeout(function doReload() {
$scope.reload();
$timeout(doReload, $scope.refreshInterval * 1000);
}, 5000);
}
模板的片段:
<table class="table table-striped table-bordered" ng-controller="HostController">
<tr>
<th>Status</th>
<th>...
</tr>
<tr ng-repeat="enc in encoders">
<td>
<div>{{ enc.name }}</div>
<div ng-show="enc.version">
v{{ enc.version.major }}.{{ enc.version.minor }}-{{ enc.version.rev }}
<span ng-show="enc.version.user">- {{ enc.version.user }}</span>
</div>
</td>
</tr>
</table>
每分钟左右在Chrome中拍摄一次堆快照时,内存使用量每次都会略有增加。我已经将Igor Minar的修复程序应用到了我的本地angular.js(https://github.com/angular/angular.js/commit/bd524fc4e5fc0feffe85632a7a6560da6bd9b762),这对我有很大的帮助,但是内存的使用仍然无情地爬上去。
任何有关使用带有angular.js的Chrome内存分析器的提示都将不胜感激。
答案 0 :(得分:4)
当我查询数据并使用ng-repeat循环并渲染行时,我遇到了与内存消耗相同的问题。
当我使用“item in items”时,我的内存使用量增加了,但是当我使用“$ item中的项目跟踪”时,内存使用情况稳定,GC正常清理。