ng-include是否有内存泄漏?

Fre*_*ind 6 memory-leaks angularjs

ng-include用来切换不同的数据页面,这些页面将进行大量的数据渲染.

我发现浏览器的内存使用量不断增长,并且永远不会退缩.

代码很简单.

HTML代码:

<body ng-controller="MainCtrl">
  <div>
    <button ng-click="url='nodata.html'">No data</button>
    <button ng-repeat="i in getNumArray(10)" ng-click="loadData(i)">Load data {{i}}</button>
  </div>
  <hr/>
  [{{url}}]
  <div ng-include="url"></div>
</body>
Run Code Online (Sandbox Code Playgroud)

它将显示"无数据"按钮,以及10个数据按钮来加载不同的页面.

角度代码:

app.controller('MainCtrl', function($scope) {
  $scope.url = "nodata.html";
  $scope.loadData = function(n) {
    $scope.url = "data" + n + ".html";
  }

  $scope.getNumArray = function(n) {
    var arr = [];
    for(var i =0;i<n;i++) {
      arr.push(i);
    }
    return arr;
  }
});

app.controller('DataCtrl', function($scope, $http){
  $http.get('data.json').success(function(data){
      $scope.data = data;
  })
});
Run Code Online (Sandbox Code Playgroud)

和"dataN.html"页面:

<div ng-controller="DataCtrl">
  <table ng-repeat="x in getNumArray(500)">
    <tbody>
      <tr>
        <td>{{data["key0"]}}</td>
        <td>{{data["key1"]}}</td>
        <td>{{data["key2"]}}</td>
        <td>{{data["key3"]}}</td>
        <td>{{data["key4"]}}</td>
        <td>{{data["key5"]}}</td>
        <td>{{data["key6"]}}</td>
        <td>{{data["key7"]}}</td>
        <td>{{data["key8"]}}</td>
        <td>{{data["key9"]}}</td>
      </tr>
    </tbody>
  </table>
</div>
Run Code Online (Sandbox Code Playgroud)

"nodata.html"页面:

<div>No data yet.</div>
Run Code Online (Sandbox Code Playgroud)

而"data.json":

{
  "key0": "sdf sdf sdf sdf sdf sdf sdf sdf sdf sd fds fds fsd fds fds fds fds fsd fds fds f",
  "key1": "sdf sdf sdf sdf sdf sdf sdf sdf sdf sd fds fds fsd fds fds fds fds fsd fds fds f",
  "key2": "sdf sdf sdf sdf sdf sdf sdf sdf sdf sd fds fds fsd fds fds fds fds fsd fds fds f",
  "key3": "sdf sdf sdf sdf sdf sdf sdf sdf sdf sd fds fds fsd fds fds fds fds fsd fds fds f",
  "key4": "sdf sdf sdf sdf sdf sdf sdf sdf sdf sd fds fds fsd fds fds fds fds fsd fds fds f",
  "key5": "sdf sdf sdf sdf sdf sdf sdf sdf sdf sd fds fds fsd fds fds fds fds fsd fds fds f",
  "key6": "sdf sdf sdf sdf sdf sdf sdf sdf sdf sd fds fds fsd fds fds fds fds fsd fds fds f",
  "key7": "sdf sdf sdf sdf sdf sdf sdf sdf sdf sd fds fds fsd fds fds fds fds fsd fds fds f",
  "key8": "sdf sdf sdf sdf sdf sdf sdf sdf sdf sd fds fds fsd fds fds fds fds fsd fds fds f",
  "key9": "sdf sdf sdf sdf sdf sdf sdf sdf sdf sd fds fds fsd fds fds fds fds fsd fds fds f"
}
Run Code Online (Sandbox Code Playgroud)

这是一个现场演示:

http://plnkr.co/edit/KGZVXIBws1kthgN2bxEJ?p=preview

当我用chrome打开实时演示时,初始化内存使用量小于100M.然后我点击"加载数据"按钮,即使我点击"无数据"按钮加载"nodata.html",它也会很快增长到300M并且永不退缩.

这是正常的吗?是否ng-include有内存泄漏还是我缺少什么?或者内存使用情况很好,我不需要担心它?

截屏

我创建了一个截屏视频来展示它:

NG-包括

Pet*_* BD 2

尝试升级到版本1.0.5。貌似没有这个问题。我相信这是因为 1.0.3/4 中模板中存在顶级空白节点时出现内存泄漏。