ChatGPT解决这个技术问题 Extra ChatGPT

Is there garbage collection in PHP?

I know that in PHP you don't have to free memory. Is it reached by garbage collector?


M
Makyen

Yes there is, here's a nice article describing its pitfalls. In PHP > 5.3.0, there is also the gc_enable function.


One gotcha not included in that article is anonymous functions, created with create_function(). These are not subject to garbage collection.
@Dave Lancea Good observation. I would just point out however that your link points on a comment made on 2007, thus perhaps it is not like this anymore in 2017 (but maybe it is, I could not find more info on the subject).
@DaveLancea, hopefully, there is no create_function() as of PHP 8.0.0. :)
t
troelskn

PHP has a combination of garbage collection and reference counting. The latter is the main mode of managing memory, with the garbage collector picking up the pieces that the ref counter misses (circular references). Before 5.3, php only had ref-counting, and even in 5.3 it's the still how memory will usually be freed.


M
Myles

Yes. There is also session cleanup done by the garbage collector.


A
Aris

since 5.3.0 there is garbage collection support. please check this very informative article from php.net http://php.net/manual/en/features.gc.php


J
Jérôme Verstrynge

Since 5.3.0 you can force garbage collection by using gc_collect_cycles function.