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
saquetim
(Sérgio Saquetim)
8
上記のPRは、OPで報告されたメモリリークに対処します。
「いいね!」 6