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

内存泄漏 – 对轮询数据使用ngRepeat时Angular.js内存泄漏

发布时间:2020-12-17 17:17:41 所属栏目:安全 来源:网络整理
导读:我的angular.js应用程序中有一个似乎是内存泄漏的东西.基本上,该页面包含一个信息表,该表每五秒钟从 AJAX调用的 JSON编码结果更新.我在这里创建了一个简化的jsfiddle版本: http://jsfiddle.net/alalonde/TtGXW/6/ 控制器: function HostController($scope,
我的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内存分析器的提示都将不胜感激.

解决方法

当我轮询数据并使用ng-repeat循环并渲染行时,我遇到了与内存消耗相同的问题.

当我使用“item in items”时,我的内存使用量不断增加,但当我使用“$item中的项目跟踪”时,内存使用情况稳定,GC正常清理.

(编辑:李大同)

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

    推荐文章
      热点阅读