mirror of
https://github.com/php/doc-ru.git
synced 2025-07-30 12:57:40 +00:00
Update gc.xml (#498)
This commit is contained in:
@ -42,9 +42,9 @@ $a = "new string";
|
||||
<para>
|
||||
В данном примере создаётся новый символ <literal>a</literal> в текущей области видимости
|
||||
и новый контейнер переменной с типом <type>string</type> и значением <literal>new string</literal>.
|
||||
Бит "is_ref" по умолчанию задаётся равным &false;, т.к. не создано ни одной пользовательской
|
||||
ссылки. Значение же "refcount" задаётся равным <literal>1</literal>, т.к. только одно имя переменной
|
||||
указывает на данный контейнер. Обратите внимание, что ссылки (т.е. "is_ref" равно &true;) с "refcount" равным <literal>1</literal>
|
||||
Бит "is_ref" по умолчанию задаётся равным &false;, т. к. не создано ни одной пользовательской
|
||||
ссылки. Значение же "refcount" задаётся равным <literal>1</literal>, т. к. только одно имя переменной
|
||||
указывает на данный контейнер. Обратите внимание, что ссылки (т. е. "is_ref" равно &true;) с "refcount" равным <literal>1</literal>
|
||||
обрабатываются так, как если бы они не были ссылками (то есть как "is_ref" было бы &false;). Если у вас установлен <link xlink:href="&url.xdebug;">Xdebug</link>, то
|
||||
вы можете вывести эту информацию, вызвав функцию <function>xdebug_debug_zval</function>.
|
||||
</para>
|
||||
@ -91,7 +91,7 @@ a: (refcount=2, is_ref=0)='new string'
|
||||
</example>
|
||||
</para>
|
||||
<para>
|
||||
Счётчик ссылок здесь равен <literal>2</literal>, т.к.
|
||||
Счётчик ссылок здесь равен <literal>2</literal>, т. к.
|
||||
<varname>a</varname> и <varname>b</varname> ссылаются на один
|
||||
и тот же контейнер переменной. PHP достаточно умён, чтобы
|
||||
не копировать контейнер, пока в этом нет необходимости. Как только
|
||||
@ -170,7 +170,7 @@ a: (refcount=1, is_ref=0)=array (
|
||||
</example>
|
||||
</para>
|
||||
<para>
|
||||
Результат - три контейнера: <varname>a</varname>, <varname>meaning</varname> и <varname>number</varname>.
|
||||
Результат — три контейнера: <varname>a</varname>, <varname>meaning</varname> и <varname>number</varname>.
|
||||
Похожие правила применяются и для увеличения и уменьшения "refcounts".
|
||||
Ниже мы добавляем ещё один элемент массива и устанавливаем ему значение уже существующего элемента:
|
||||
</para>
|
||||
@ -314,8 +314,8 @@ a: (refcount=2, is_ref=1)=array (
|
||||
<title>Суть проблемы</title>
|
||||
<para>
|
||||
Хотя во всех областях видимости больше нет имени переменной, ссылающейся на
|
||||
данную структуру, она не может быть очищена, т.к. элемент массива "1" по-прежнему
|
||||
ссылается на этот массив. Т.к. теперь нет никакой возможности пользователю
|
||||
данную структуру, она не может быть очищена, т. к. элемент массива "1" по-прежнему
|
||||
ссылается на этот массив. Т. к. теперь нет никакой возможности пользователю
|
||||
удалить эти данные, то мы получили утечку памяти.
|
||||
К счастью, PHP удалит эти данные при завершении запроса, но до этого момента
|
||||
данные будут занимать ценное место в памяти. Такая ситуация часто бывает, когда
|
||||
@ -422,7 +422,7 @@ a: (refcount=2, is_ref=1)=array (
|
||||
может стать то, что некоторые части вашего приложения могут быть требовательными
|
||||
ко времени. В этих случаях вы, возможно, не захотите постороннего вмешательства
|
||||
сборщика мусора. Разумеется, выключая сборщик мусора в определённых
|
||||
местах вашего приложения вы рискуете получить утечку памяти, т.к.
|
||||
местах вашего приложения вы рискуете получить утечку памяти, т. к.
|
||||
потенциально некоторые корни могут не поместиться в ограниченный
|
||||
корневой буфер. Более целесообразно будет вызвать <function>gc_collect_cycles</function>
|
||||
непосредственно перед вызовом <function>gc_disable</function> для освобождения памяти и уже
|
||||
|
Reference in New Issue
Block a user