Garbage Collection PHP


O Garbage Collection é um contender onde ficam alocadas variáveis com seus respectivos tipos e valores, também armazenam bits condicionais, esses bits condicionais com valores default de 0 e 1 chamados de ‘is_ref’ e ‘refcount’ respectivamente.

Is_ref:

É a quantidade de referências na memória, possue o número default representado por 0, a cada referência na memória é acrescentado +1 a esse valor, ou seja, se referenciarmos uma variavel o valor de is_ref torna-se 1, se referenciarmos outra variavel o valor de is_ref torna-se 2.

refcount:

É a quantidade de variáveis no programa, possue o número default representado por 1, a cada variável criada é somado +1 na contagem de ‘refcount’, assim, se criarmos 2 variáveis teremos refcount igual a 2, e assim por diante.

Na Prática:

 <?php
$a = 'string';
xdebug_debug_zval('a');
?>

irá imprimir:

a: (refcount=1, is_ref=0)='string'
 <?php
$a = "new string";
$b = $a;
xdebug_debug_zval( 'a' );
?>

Irá imprimir:

a: (refcount=2, is_ref=0)='string'
<?php
$a = "string";
$c = $b = $a;
xdebug_debug_zval( 'a' );
unset( $b, $c );
xdebug_debug_zval( 'a' );
?> 

irá imprimir:

a: (refcount=3, is_ref=0)='string'
a: (refcount=1, is_ref=0)='string'
 <?php
$a = array( 'meaning' => 'life', 'number' => 42 );
xdebug_debug_zval( 'a' );
?> 

irá imprimir:

a: (refcount=1, is_ref=0)=array (
   'meaning' => (refcount=1, is_ref=0)='life',
   'number' => (refcount=1, is_ref=0)=42
)
<?php
$a = array( 'meaning' => 'life', 'number' => 42 );
$a['life'] = $a['meaning'];
xdebug_debug_zval( 'a' );
?> 

irá imprimir:

a: (refcount=1, is_ref=0)=array (
   'meaning' => (refcount=2, is_ref=0)='life',
   'number' => (refcount=1, is_ref=0)=42,
   'life' => (refcount=2, is_ref=0)='life'
)
<?php
$a = 'string';
$b =&$a;
xdebug_debug_zval( 'a' );
?> 

irá imprimir:

a: (refcount=2, is_ref=1)='string'

OBS: estou usando o xdebug para debugar, caso utilize o comando xdebug_debug_zval( ); e não funcione, certifique-se de instalar o xdebug, ou verifique se sua IDE possui xdebug.
Para instalar visite o site oficial: site oficial xdebug

,

  1. Nenhum comentário ainda.
(não será publicado)