⇒ Библиотека книг по компьютерным технологиям
⇒ ⇒ Разработка Windows-приложений на Microsoft Visual Basic .NET и Microsoft Visual C# .NET. Учебный курс MCAD/MCSD
⇒ ⇒ ⇒ Глава 1. Введение в .NET Framework
⇒ ⇒ ⇒ ⇒ Практикум 1. Применение классов и демонстрация сбора мусора
Читать далее: Закрепление материала
Интерфейс, взятый из проекта DemoTest
, состоит из формы с двумя видимыми элементами управления — кнопкой (button
) и надписью (label
) и одним невидимым — таймером, обновляющим надпись каждый 10 секунд. Запустите созданное вами приложение и пронаблюдайте за созданием экземпляров класса Demo
и уничтожением при сборе мусора.
Демонстрация работы сборщика мусора
Form1
и убедитесь, что на ней есть элементы управления Button
и Label
, а в области компонентов присутствует компонент Timer
.Примечание. Подробнее об элементах управления — в главе 2.
Button1
— откроется окно кода с обработчиком события Click
для кнопки.Private Sub Button1_Click
(Visual Basic .NET) или private void button1_Click
(Visual C#). Изучите следующий код:Visual Basic .NET
Dim Counter As Integer Dim aDemo For Counter = 1 To 1000 aDemo = New Demo Next
Visual C#
int Counter; Demo aDemo; for(Counter = 0; Counter < 1000; Counter++) { aDemo = new Demo(); }
Здесь объявляются две переменные типа Demo
— Counter
и aDemo
, за которыми следует цикл, тысячу раз присваивающий переменной aDemo
ссылку на новый экземпляр класса Demo
. При создании каждого экземпляра класса Demo
выполняется его конструктор, который увеличивает значение переменной Instances
. Запись ссылки на новый экземпляр Demo
в переменную aDemo
, выполняемая в цикле, уничтожает ссылку на предыдущий экземпляр. С каждым оборотом цикл создает все больше объектов Demo
, на которые никто не ссылается, увеличивая работу для сборщика мусора. Каждый щелчок кнопки создает тысячу новых объектов.
F5
, чтобы скомпилировать и запустить приложение. Появится кнопка и надпись, отображающая число экземпляров класса Demo
, существующих в памяти. Щелкните кнопку один раз.На форме появится следующая надпись: «There are 1000 instances of Demo in memory
». Подождите немного, через некоторое время (примерно через пару минут) вы увидите, что в памяти не осталось ни одного экземпляра Demo
. Это означает, что все 1000
экземпляров класса Demo
были удалены при сборе мусора. При удалении каждого объекта был исполнен деструктор, при этом значение переменной Instances
уменьшалось.
Поскольку приоритет потока сборщика мусора относительно невысок, надпись изменяется не мгновенно. Однако при нехватке памяти приоритет этого потока возрастает.
Все книги представлены на сайте исключительно для ознакомления с содержанием. |