Rumah  >  Artikel  >  pembangunan bahagian belakang  >  php内存管理之垃圾回收机制的详解(图)

php内存管理之垃圾回收机制的详解(图)

黄舟
黄舟asal
2017-03-20 10:04:403155semak imbas

每个php变量都存在一个zval变量容器中,容器除了包含变量的类型和值外,还有is_ref是否属于引用

还有个refcount引用计数,当把一个变量赋值给另一个变量将增加引用次数,在变量被unset或者离开

它的作用域时,引用计数减1,当引用计数减为0时,内存回收。但这样的机制在循环引用时存在内存

泄漏。

例:当把一个数组本身当做一个数组元素时,就出现如图:

1246.jpg

当数组a被unset之后,就出现如图:

1247.jpg

内存无法被回收的问题。

为解决这个问题php5.3之后引入了gc机制,具体就是建立一个根缓冲区,将可疑的zval变量容器加入

跟缓冲区,默认是1000个,可设置,如果满了之后根据回收算法机制进行清除。

Atas ialah kandungan terperinci php内存管理之垃圾回收机制的详解(图). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn