Книга: Описание языка PascalABC.NET

Управление памятью

Управление памятью

Все ссылочные типы в .NET находятся под управлением так называемого сборщика мусора. Это значит, что выделенная вызовом конструктора память никогда не возвращается явно вызовом деструктора. После того как объект становится не нужным, ему следует присвоить nil.

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

Например, при выполнении участка кода

type

Person = class

...

end;

var p: Person := new Person('Иванов',20);

...

p := nil;

память, отведенная под p, после присваивания ей nil станет недостижимой и будет собрана в непредсказуемый момент.

Отметим, что динамическая память, выделяемая процедурой New, не находится под управлением сборщика мусора, поэтому нуждается в явном освобождении вызовом процедуры Dispose. Именно поэтому работа с обычными указателями считается в PascalABC.NET устаревшей и не рекомендуется к использованию.

Оглавление книги


Генерация: 0.169. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз