Здравствуйте, Виталий Брусенцев, Вы писали:
ВБ>Статья:
ВБ>Авторы:
ВБ> Виталий Брусенцев
ВБ>Аннотация:
ВБ>Третья часть будет посвящена таким вопросам, как вывод векторных примитивов (а также работа с необходимыми для этого графическими объектами). Кроме этого, речь пойдет о таком полезном понятии, как метафайлы GDI+.
А почему в примере с часами идет постоянное потребление памяти программой ????
Здравствуйте, Аноним, Вы писали:
А>А почему в примере с часами идет постоянное потребление памяти программой ????
Ничего страшного — дотнет в действии.
Пока есть свободная память, GC не вызывается, и программа продолжает потребление хипа.
А почему потребление растет?
Во-первых, из-за недр WinForms. Даже такая программа будет потреблять память, если окно перемещать и перекрывать:
using System;
using System.Windows.Forms;
class MyClass
{
static void Main()
{
Form f = new Form();
f.Paint += new PaintEventHandler(Foo);
Application.Run(f);
}
static void Foo(object sender, PaintEventArgs e)
{
}
}
В обработчик события передаются объекты, создаваемые на хипе.
Во-вторых, из-за вот этой строки:
float[] compVals = new float[]{0.0f, 0.2f, 0.5f, 0.7f, 0.9f, 1.0f};
Остальные объекты в программе либо создаются не на хипе (Point — это структура), либо диспозятся при помощи using.
Обратите внимание, что число хендлов GDI не растет: они не связаны с хендлами GDI+.