4

angular.js アプリでメモリ リークと思われるものが発生しました。基本的に、このページは、JSON でエンコードされた AJAX 呼び出しの結果から 5 秒ごとに更新される情報のテーブルで構成されます。ここで単純化された 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 で約 1 分ごとにヒープ スナップショットを作成すると、メモリ使用量が毎回わずかに増加します。Igor Minar の修正をローカルの angular.js ( https://github.com/angular/angular.js/commit/bd524fc4e5fc0feffe85632a7a6560da6bd9b762 ) に適用しましたが、これは非常に役立ちましたが、メモリ使用量は依然として容赦なく忍び寄っています。

angular.js で Chrome メモリ プロファイラーを使用する際のヒントをいただければ幸いです。

4

1 に答える 1