Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpory_Pris.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
987.65 Кб
Скачать
  1. Net Framework. Механизм сборки мусора.

Сборка мусора - одна из форм автоматического управления памятью. Специальный код, называемый сборщиком мусора (garbage collector), периодически освобождает память, удаляя объекты, которые уже не будут востребованы приложением — то есть производит сборку мусора.

Сборка мусора – метод освобождения динамической памяти путем автоматического удаления объектов в случае отсутствия ссылок на них

 занимает время

 недетерминирована (выполняется по инициативе CLR, а не приложения)

 существует механизм принудительной сборки мусора

Деструктор – метод, вызывающийся CLR непосредственно перед уничтожением

объекта сборщиком мусора

 синтаксис:

~имя_класса()

{тело}

 нельзя предсказать, когда будет выполнен деструктор

Начиная работу, сборщик предполагает, что все объекты в куче — мусор. Ина­че говоря, он предполагает, что в стеке потока нет переменных, ссылающихся на объекты в куче, а также что на объекты в куче не ссылаются регистры процессо­ра и статические поля. Затем сборщик переходит к этапу сбора мусора, называе­мому маркировка (marking). Он проходит по стеку потока и проверяет вес кор­ни. Если окажется, что корень ссылается на объект, в поле SyncBlocklndex этого объекта будет включен бит — именно так объект маркируется. Например, сбор­щик мусора может найти локальную переменную, указывающую на объект в куче. На рис. 20-3 показана куча с несколькими объектами, в которой корни приложе­ния напрямую ссылаются на объекты А, С D и F. Все эти объекты маркируются. При маркировке объекта D сборщик мусора замечает, что в этом объекте есть поле, ссылающееся на объект Н. Поэтому объект Н также помечается. Затем сборщик продолжает рекурсивный просмотр всех достижимых объектов,

После маркировки корня и объекта, на который ссылается его поле, сборщик мусора проверяет следующий корень и продолжает маркировать объекты. При попытке пометить объект, уже помеченный ранее, сборщик мусора останавлива­ется. Это нужно по двум причинам. Во-первых, заметно повышается быстродействие, так как сборщик проходит набор объектов не больше одного раза, а во-вторых, исключается возможность бесконечных циклов, возникающих из-за зам­кнутых связных списков объектов.

  1. C#. Объявление класса.

Объявление класса в языке C# создает новый ссылочный тип, дающий возможность программисту моделировать объекты (элементы данные) и которым присуще определённое поведение (методы).

доступ class имя_класса

{

// члены класса

}

Пример:

public class Complex

{ ... }

Каждый класс в C# автоматически снабжается типовым конструктором, который вы можете при необходимости переопределить. Этот типовой конструктор используется по умолчанию и гарантирует что все члены-данные по умолчанию получат типовые входные значения. Конструктор имеет имя, соответствующее имени класса и он никогда не возвращает значения.

Поле – член типа, которые представляет данные и хранит ссылку на ссылочный тип или экземпляр размерного типа.

доступ модификатор тип имя = значение;

public static int MaxSize = 10;

private int x = 7;

  • static – поле связано с типом, а не с каким-либо конкретным объектом

  • readonly – запись в поле разрешается только из кода конструктора

Определение метода

доступ модификатор тип_возврата имя_метода(параметры)

{

тело_метода

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]