46 lines
1.9 KiB
HTML
46 lines
1.9 KiB
HTML
<html>
|
||
|
||
<head>
|
||
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
||
<param name="Keyword" value="Сборщик мусора">
|
||
</object>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
||
<title></title>
|
||
<link rel="StyleSheet" href="../../default.css">
|
||
</head>
|
||
|
||
<body>
|
||
<H1>Управление памятью </H1>
|
||
<p>Все ссылочные типы в .NET находятся
|
||
под управлением так называемого <font color="#FF0000"><i><b>сборщика мусора</b></i></font>.
|
||
Это значит, что выделенная вызовом конструктора память никогда не возвращается
|
||
явно вызовом деструктора. После того как объект становится не нужным, ему
|
||
следует присвоить <code>nil</code>. </p>
|
||
<p>При нехватке динамической памяти выполнение программы
|
||
приостанавливается, и запускается специальная процедура, называемая сборкой
|
||
мусора. Она определяет все так называемые достижимые объекты. Если на данный
|
||
объект более никто не указывает, то он считается недостижимым и будет собран
|
||
сборщиком мусора. Время вызова сборщика мусора считается неопределенным.</p>
|
||
<p>Например, при выполнении участка кода</p>
|
||
<blockquote>
|
||
<p> <code><b>type</b> <br>
|
||
Person = <b>class</b><br>
|
||
...<br>
|
||
end;<br>
|
||
<b>var</b> p: Person := <b>new</b> Person('Иванов',20);<br>
|
||
...<br>
|
||
p := nil;</code></p>
|
||
</blockquote>
|
||
<p>память, отведенная под <code>p</code>,
|
||
после присваивания ей <code>nil</code> станет
|
||
недостижимой и будет собрана в непредсказуемый момент.</p>
|
||
<p><span lang="ru">Отметим, что динамическая память, выделяемая процедурой
|
||
</span>New<span lang="ru"> и контролируемая <a href="../Types/pointers.html">
|
||
указателями</a>, не находится под управлением сборщика мусора,
|
||
поэтому нуждается в явном освобождении вызовом процедуры </span>Dispose<span lang="ru">.
|
||
Именно поэтому работа с обычными указателями считается в </span><b>PascalABC.NET</b>
|
||
<span lang="ru">устаревшей и не рекомендуется к использованию.</span></p>
|
||
</body>
|
||
|
||
</html>
|