Breeze、ASP.NET Web API、および MySQL データベースを使用して SPA を開発しています。データベースの本体 (Code First EF) には、4 つの一対多の関係と 20 の単純なプロパティがあります。このエンティティを 500 個までダウンロードすると (関連するエンティティを持つオブジェクトの合計量は 2000 個まで)、Chrome タブ プロセスは 250 MB 以上の RAM を使用します (UI をロードしない場合)。そして、私が何人かの実体を救うと、この価値は高まりました。それは正常ですか?この値を減らすにはどうすればよいですか?
2 に答える
Breeze v 1.1 の時点で、breeze の一部のメモリ リークを修正し、大きなクエリを処理する際のメモリ プレッシャーを軽減しました。さらに、そよ風が使用する Q ライブラリの最新バージョンでも、いくつかのリークが修正されています。うまくいけば、より小さなフットプリントが表示されるはずです。さらに調査結果を投稿してください....これについてコメントしていただきありがとうございます。
これまでのところ、この結果を再現できていないので、もう少し情報を得ることができますか? 明確にするために、クエリは 500 のルート エンティティに対するもので、それぞれに 20 の単純なプロパティと 4 つのナビゲーション プロパティがあり、クエリされるエンティティの総数はわずか 2000 です (各ナビゲーション プロパティには平均して 1 つの関連エンティティがありますか? (2000/(500*4))。
関連エンティティのサイズは?
「EntityQuery.expand」を使用して関係プロパティを取得していますか、それとも「entityAspect.loadNavigationProperty」を使用していますか?
それぞれの Breeze entityManager はキーごとに各エンティティの 1 つのコピーを格納するため、より多くのエンティティを取得する (または複数の entityManager を使用する) 場合を除き、メモリ使用量は増加しません。