Книга: Описание языка PascalABC.NET
Управление памятью
Управление памятью
Все ссылочные типы в .NET находятся под управлением так называемого сборщика мусора. Это значит, что выделенная вызовом конструктора память никогда не возвращается явно вызовом деструктора. После того как объект становится не нужным, ему следует присвоить nil.
При нехватке динамической памяти выполнение программы приостанавливается, и запускается специальная процедура, называемая сборкой мусора. Она определяет все так называемые достижимые объекты. Если на данный объект более никто не указывает, то он считается недостижимым и будет собран сборщиком мусора. Время вызова сборщика мусора считается неопределенным.
Например, при выполнении участка кода
type
Person = class
...
end;
var p: Person := new Person('Иванов',20);
...
p := nil;
память, отведенная под p, после присваивания ей nil станет недостижимой и будет собрана в непредсказуемый момент.
Отметим, что динамическая память, выделяемая процедурой New, не находится под управлением сборщика мусора, поэтому нуждается в явном освобождении вызовом процедуры Dispose. Именно поэтому работа с обычными указателями считается в PascalABC.NET устаревшей и не рекомендуется к использованию.
- Как у вас с памятью?
- Принципы управления памятью
- Глава 3 Управление памятью на уровне пользователя
- Глава 9 Управление процессами и каналы
- Управление памятью процесса
- Глава 11 Управление памятью
- Управление памятью (memory management) и сборка мусора (garbage collection)
- ГЛABA 7 Управление памятью
- ГЛАВА 5 Управление памятью, отображение файлов и библиотеки DLL
- Управление памятью кучи
- Лекция 9. Управление памятью
- ГЛАВА 8 Производительность и управление памятью