首页 > 代码库 > PHP 的垃圾收集机制是怎样的

PHP 的垃圾收集机制是怎样的

PHP作为脚本语言是页面结束即释放变量所占内存的。 当一个 PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中所有对象同时被销毁。GC进程一般都跟着每起一个SESSION而开始运行的。

gc目的是为了在session文件过期以后自动销毁删除这些文件。在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁;这是PHP 的GC垃圾处理机制,防止内存溢出。 

执行这些函数也可以起到回收作用 

__destruct

unset

mysql_close

fclose php对session有明确的gc处理时间。

设定 session.gc_maxlifetime 如果说有垃圾,那就是整体的程序在框架使用中,会多次调用同一文件等等造成的非单件模式等。所以在出来的时候,必要的用_once 引用,在声明类的时候使用单件模式。还有简化逻辑等等。

而如果妄想让PHP自己本身管理内存,进行垃圾管理。呵呵。好像PHP还办不到,对于析构函数,ANDI在他的书里写的很明白。可有可无,不可置否。而内存管理的东西一般都是桌面程序更多去考虑的。

——————

以下来自官方文件

  • PHP 手册》特点》垃圾回收机制

垃圾回收机制

Table of Contents

  • 引用计数基本知识
  • 回收周期(Collecting Cycles)
  • 性能方面考虑的因素

这部分将说明PHP 5.3的新的垃圾回收机制(也就是GC)的特点。

引用计数基本知识

http://php.net/manual/zh/features.gc.refcounting-basics.php#features.gc.compound-types

回收周期(Collecting Cycles) 

http://php.net/manual/zh/features.gc.performance-considerations.php

性能方面考虑的因素

http://php.net/manual/zh/features.gc.performance-considerations.php#features.gc.performance-considerations

 

PHP 的垃圾收集机制是怎样的