別のシステムから多数の Sitecore アイテムをループで作成する必要がある Sitecore アプリケーションがあります。以下は私のテスト目的のループです。
using (new Sitecore.SecurityModel.SecurityDisabler())
{
for (int i = 0; i < 20000; i++)
{
Item newItem = MyTemplateItem.CreateItemFrom(DateTime.Now.Ticks.ToString(), myParentItem);
newItem.Editing.BeginEdit();
newItem.Fields["Title"].Value = Guid.NewGuid().ToString();
newItem.Editing.EndEdit();
}
}
このループが実行されているときにタスク マネージャーを見ていると、プロセスのメモリ使用量が時間とともに増加しています。
SitecoreItem
クラスにはIDisposable
インターフェイスが実装されていないため、作成したアイテムの Finalizer を呼び出すことができません。
このメモリリークを回避するにはどうすればよいですか?
PS: Windows アプリケーションを使用してこの操作を実行し、Sitecore がキャッシュの更新とインデックスの構築を行う IIS プロセスのメモリ リークを回避しています。