私はバックエンドから表形式のデータを定期的に取り出し、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}]
私は、サービスコールバックからmeasuredDataを受信するたびに新しいメモリ位置を指す(または新しい配列を作成する)$ scope.measurementResultsですか?
は編集:私はメモリグラフの2枚のスクリーンショットを添付しています は、最初のものは、ノードが上がるとダウン(グリーンライン)、2つ目は$で、」トラックを適用した後のラインがフラットになる方法を示しています方法を示していますインデックス」
はい、毎回XHRは、サーバからデータを受信するために新しいメモリを使用しています。 [代入演算子](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Assignment_Operators#Assignment)は '$ scope.measurementResults'を新しいメモリにポイントし、古いメモリはガベージコレクションのために解放されました。 – georgeawg
私は、この種の定期的な呼び出しがあるすべてのページで、ChromeやFirefoxなどのインクリメンタルメモリの使用状況を観察します。私はそれが私のコードによるものなのか、それともブラウザが古いメモリを解放していないからなのか分かりません。私はサファリでこれを観察しませんが、安定しています。 – user2217057
AngularJSのどのバージョンを使用していますか? Version1.3で修正された 'ng-repeat'メモリリークの問題がありました。詳細については、[GitHub AngularJS Issue#10121](https://github.com/angular/angular.js/issues/10121)を参照してください。 – georgeawg