У меня есть приложение Windows Form. Когда я добавляю некоторые кнопки в форму динамически, а затем удаляет эти кнопки, происходит утечка памяти. ИспользованиеУтечка памяти динамического управления
public partial class Form1 : Form
{
private Button[] buttons = new Button[1000];
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 1000; i++)
{
var b = new Button();
Controls.Add(b);
buttons[i] = b;
}
for (int i = 0; i < 1000; i++)
{
Controls.Remove(buttons[i]);
buttons[i].Dispose();
buttons[i] = null;
}
}
}
Память:
- После формы нагрузок: 3720 KB
- После нажатия кнопки Button1:. 5144 KB
(Эти номера записаны после выполнения полного сбора мусора программы был запущен без отладчика, релиз сборки.)
Еще более странно, независимо от того, сколько раз выполняется функция button1_Click, использование памяти составляет около 5100 КБ. Что я делаю не так?
Если память остается на уровне 5,1 мб, то утечки памяти нет. Обычно утечка означает, что она не останавливается в определенной точке. – Mikanikal
Но почему использование памяти увеличивается после добавления, а затем удаления элементов управления? Это довольно странно для меня. – jetstream96
Вы можете попробовать выполнить калибровку 'GC.Collect()'. Кроме того, попробуйте использовать профилировщик _memory_, например [ANTS Memory Profiler] (http://www.red-gate.com/products/dotnet-development/ants-memory-profiler). –