我有一個Sitecore應用程序,我需要在另一個系統的循環中創建大量的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();
}
}
當這個循環運行期間,在看任務管理器,在進程的內存使用量越來越隨時間增加。
Sitecore Item
類尚未實現IDisposable
接口,所以我無法調用創建項目的終結器。
我該如何避免這種內存泄漏?
PS:我正在使用Windows應用程序執行此操作以繞過IIS進程內存泄漏,其中Sitecore執行其緩存更新和索引構建,這應在此過程結束時完成。
你確定它確實是一個泄漏?你正在執行一個函數,它必須分配內存並在循環中這樣做。僅僅因爲進程內存增加並不意味着它是泄漏。記憶永遠不會下降嗎? – ddysart
我認爲我的術語是正確的,內存在不斷增長,如果RAM已滿,PC將重新啓動。它是一個內存泄漏。我已經監控了大約一個小時的循環。 –