PHP 8.3 新特性 - gc_status() 返回额外的垃圾回收信息

作者: 温新

图书: 【PHP 8.3 新特性】

阅读: 537

时间: 2024-11-20 15:14:19

hi,我是温新,一名 PHPer

PHP 的 gc_status() 函数返回有关 PHP 垃圾回收器的统计信息,例如是否正在运行垃圾回收器、是否受到保护以及缓冲区大小。当调试长时间运行的 PHP 应用程序以检测和优化内存使用情况时,这些信息非常有用。

<?php
    
print_r(gc_status());

输出信息如下

Array
(
    [running] => 
    [protected] => 
    [full] => 
    [runs] => 0
    [collected] => 0
    [threshold] => 10001
    [buffer_size] => 16384
    [roots] => 0
    [application_time] => 0.006616683
    [collector_time] => 0
    [destructor_time] => 0
    [free_time] => 0
)

PHP 8.3 之前,gc_status() 函数返回一个包含四个键的数组:

类型 描述
runs Integer 垃圾回收器运行的次数
collected Integer 收集的对象数
threshold Integer 缓冲区中将触发垃圾回收的根的数量
roots Integer 缓冲区中的当前根数

在 PHP 8.3 中,gc_status 函数返回八个额外的字段:

类型 Description
running Boolean 如果垃圾收集器正在运行,则返回 true,否则为 false
protected Boolean 如果垃圾收集器受到保护并且禁止添加根目录,则返回 true,否则为 false
full Boolean 如果垃圾收集器缓冲区大小超过 GC_MAX_BUF_SIZE,则返回 true。当前设置为 0x40000000(= 1024³)
buffer_size Integer 当前垃圾收集器缓冲区大小
application_time Float 应用程序的总时间,以秒为单位(包括 collector_time)。
collector_time Float 收集周期所花费的时间,以秒为单位(包括 destructor_time 和 free_time)。
destructor_time Float 在循环收集期间执行析构函数所花费的时间,以秒为单位。
free_time Float 在循环收集期间释放值所花费的时间,以秒为单位。
请登录后再评论