pascalabcnet/PABCNetHelp/LangGuide/MemoryManagement/index_memory.html
Mikhalkovich Stanislav a0ef92bb0e Исправления в справке
pull request SunSerega
2019-01-23 20:14:45 +03:00

46 lines
1.9 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>&nbsp;<code><b>type</b> <br>
&nbsp; Person = <b>class</b><br>
&nbsp;&nbsp;&nbsp; ...<br>
&nbsp; 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>