В моем приложении у меня есть много RichTextBox, которые создаются динамически во время выполнения. Я понял, что у приложения есть утечка памяти, которая вызвана элементами управления RichTextBox. Чтобы доказать утечку памяти из-за контроля, я написал следующий метод теста:
for (int i = 0; i < 3000; i++)
{
Control rich = new RichTextBox();
pnl.Content = rich;
}
GC.Collect();
GC.WaitForPendingFinalizers();
pnl - это ContentControl, который объявлен в коде Xaml.
Если вы запустите следующий код, вы увидите, что использование памяти быстро растет.
Есть идеи как решить проблему?
Я подумал о создании пула объектов, но это усложнило бы мое приложение, и я бы предпочел его избегать.
edit : я добавил вызов сборщику мусора, чтобы продемонстрировать, что объекты не являются сборщиком мусора - нет улучшения в использовании памяти с вызовом метода GC и без него.
Обратите внимание, что вызов rich.Dispose
в цикле устраняет рост использования памяти.