エンティティフレームワークは、新しいオブジェクトをデータベースに挿入するときに過剰な量のメモリを使用するように見えます。エンティティフレームワークのメモリ使用率
for(int i = 0; i < numOwners; ++i)
{
var owner = Owner.CreateOwner();
db.AddToOwnerSet(owner);
for(int j = 0; j < numChildren; ++j)
{
var child = Child.CreateChild();
owner.Childs.Add(child);
}
}
db.SaveChanges();
この時点では、これらのオブジェクトにはほとんどデータ要素が含まれていません。これらのオブジェクトの140,000をデータベースに挿入すると、アプリケーションの合計メモリ使用量は600 MB、300,000に対して1.2ギガバイトでした。これらのオブジェクトは小さく、文字列名と整数キーだけです。
SaveChanges呼び出しをループに入れてメモリ使用量を減らすことはできますが、実行時間が非常に悪くなり、すでにかなり悪いです。
エンティティフレームワークが非常に多くのメモリを使用している理由、またはメモリを少なくする方法を知っていますか?