gc_status în PHP

Returnează statistici despre colectorul de referințe circulare: de câte ori a rulat, câte valori a eliberat etc.

Sintaxă
gc_status(): array

Ce face gc_status

Cheile principale: runs (de câte ori a rulat colectorul), collected (câte valori a eliberat în total), threshold (numărul de candidați la care pornește singur) și roots (câți candidați sunt acum). Din PHP 8.3 există și running, protected, full, buffer_size și timpii petrecuți în colector.

Ce returnează

Un tablou asociativ cu statistici.

Exemple

Exemplul 1: Statisticile după o colectare

<?php
for ($i = 0; $i < 5; $i++) {
    $a = new stdClass();
    $a->eu = $a;
}
unset($a);
gc_collect_cycles();

$stare = gc_status();
foreach (["runs", "collected", "threshold", "roots"] as $cheie) {
    echo "$cheie: " . $stare[$cheie] . "\n";
}

Rezultat

runs: 1
collected: 5
threshold: 10001
roots: 0

Greșeli frecvente

  • Compari timpii din gc_status() între rulări diferite ca și cum ar fi exacți. Sunt măsurători în secunde, care variază de la o rulare la alta.

Comenzi înrudite

  • gc_collect_cycles: Pornește imediat colectorul de referințe circulare și returnează câte valori a eliberat.
  • gc_enabled: Verifică dacă colectorul de referințe circulare este pornit.
  • gc_mem_caches: Eliberează memoria păstrată în rezervă de managerul de memorie al PHP și returnează câți octeți a eliberat.