我正在使用$超時來定期從後端拖出表格數據並以HTML格式顯示它們。我懷疑每次獲得更新時,都會在瀏覽器中爲JSON數組分配一個新的內存段。我想知道是不是這種情況。以下是代碼的簡化片段。AngularJS數組和增量內存使用
HTML`
<tr ng-repeat="measurement in measurementResults">
<td>{{measurement.type}}</td>
<td>{{measurement.value}}</td>
</tr>
JS
function startTimeout() {
MeasurementService.getNewMeasurements(function (measuredData) {
$scope.measurementResults = measuredData;
});
$timeout(startTimeout, 15000);
}
startTimeout();
這是我傳遞到$範圍JSON數據陣列格式。
[{"type":type1,"value":10}, {"type":type2,"value":20}, {"type":type3,"value":80}]
爲$ scope.measurementResults指向一個新的存儲位置(或創建一個新的數組)每次我從服務回調接收measuredData時間?
編輯: 我附上記憶圖形的兩張截圖,第一個顯示的節點如何去向上和向下(綠線),而第二個顯示了$應用「軌道之後怎麼行變得平坦指數」
是,在每次使用XHR新的存儲從服務器接收數據。 [賦值運算符](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Assignment_Operators#Assignment)將'$ scope.measurementResults'指向新內存,舊內存爲釋放垃圾收集。 – georgeawg
我觀察到增量內存使用情況,例如在Chrome和Firefox中,每個頁面上都有這種定期調用。我不知道這是由於我的代碼,或者如果這是因爲瀏覽器不釋放舊內存。儘管Safari並沒有觀察到這一點,但它仍然保持穩定。 – user2217057
您正在使用什麼版本的AngularJS?有一些'ng-repeat'內存泄漏問題在Version1.3中修復。有關更多信息,請參閱[GitHub AngularJS問題#10121](https://github.com/angular/angular.js/issues/10121)。 – georgeawg