PERF: frontend-store にメモリリークがあるようです

store.js ファイルでメモリリークが発生しているようです。ユーザーがさまざまなトピックを閲覧すると、RESTfulリクエストごとに_identityMapが急速に増加しているように見えます。適切なクリーンアップロジックがないと、マップは大きなjsヒープでメモリを使い果たします。

FIFOアルゴリズムを使用して最も古いマップを削除するpruneMap関数をstore.jsに追加するだけで十分でしょうか?

また、キャッシュとメモリストレージのバランスを取るために、変数const MAX_ITEMS_PER_TYPE = 500;についてさらに議論することができます。

「いいね!」 3

それについて詳しく教えていただけますか?

それを裏付けるデータはありますか?

再現手順は以下の通りです。ユーザーがページを更新せずにトピックの下にある「提案/関連」を使用して次々とトピックをスキップすると、テストではJSヒープサイズが元の100MBから約500MBに蓄積します(特に投稿数が多いトピックを訪問した場合)。ホームページに戻っても、占有されたメモリの一部は解放されません。

このJSヒープサイズはブラウザコンソール-パフォーマンスで確認でき、メモリ使用量はブラウザのプロセス管理で確認できます。

この問題を示すビデオをPRに添付しました(約3分。同じページを数時間使用すると状況はさらに悪化します)。

また、ここにブレークポイントを追加すると、_identityMap内のアイテムの増加量が示されます。

しかし、この問題の原因が_identityMapであるかどうかは定かではありません。調査のための情報として提供します。

「いいね!」 2

上記のPRは、OPで報告されたメモリリークに対処します。:smiley:

「いいね!」 6