gc_mem_caches în PHP

Eliberează memoria păstrată în rezervă de managerul de memorie al PHP și returnează câți octeți a eliberat.

Sintaxă
gc_mem_caches(): int

Ce face gc_mem_caches

Managerul de memorie al PHP nu dă imediat înapoi sistemului memoria eliberată: o păstrează în rezervă, ca să o refolosească rapid. gc_mem_caches eliberează această rezervă. Este util doar în procese care rulează mult timp, după o operație care a folosit temporar foarte multă memorie.

Ce returnează

Numărul de octeți eliberați.

Exemple

Exemplul 1: După o operație mare

<?php
$mare = [];
for ($i = 0; $i < 200000; $i++) {
    $mare[] = "rândul $i";
}
unset($mare);

$octeti = gc_mem_caches();
echo "Eliberat: " . round($octeti / 1024) . " KB";

Rezultat posibil (diferă la fiecare rulare)

Eliberat: 44 KB

Greșeli frecvente

  • Confunzi această funcție cu gc_collect_cycles. gc_mem_caches nu caută referințe circulare; doar returnează sistemului memoria deja liberă.

Comenzi înrudite

  • gc_collect_cycles: Pornește imediat colectorul de referințe circulare și returnează câte valori a eliberat.
  • gc_status: Returnează statistici despre colectorul de referințe circulare: de câte ori a rulat, câte valori a eliberat etc.