• 技术文章 >后端开发 >php教程

    一文聊聊php中的垃圾回收机制

    青灯夜游青灯夜游2022-08-26 10:48:25转载1699
    本篇文章带大家深入了解一下php中的垃圾回收机制,希望对大家有所帮助!

    php入门到就业线上直播课:进入学习

    一、引用计数基础知识

    二、生成zval容器

    <?php
    $a = "new string";
    xdebug_debug_zval('a');
     
    //结果
    a: (refcount=1, is_ref=0)='new string'

    三、增加zval的引用计数

    <?php
    $a = "new string";
    $b = $a;
    xdebug_debug_zval( 'a' );
    
    //结果
    a: (refcount=2, is_ref=0)='new string'

    四、减少zval引用计数

    <?php
    $a = "new string";
    $c = $b = $a;
    xdebug_debug_zval( 'a' );
    unset( $b, $c );
    xdebug_debug_zval( 'a' );
    
    //结果
    a: (refcount=3, is_ref=0)='new string'
    a: (refcount=1, is_ref=0)='new string'

    五、复合类型的zval容器

    <?php
    $a = array( 'meaning' => 'life', 'number' => 42 );
    xdebug_debug_zval( 'a' );
    
    //结果
    a: (refcount=1, is_ref=0)=array (
       'meaning' => (refcount=1, is_ref=0)='life',
       'number' => (refcount=1, is_ref=0)=42
    )

    六、增加复合类型的引用计数

    <?php
    $a = array( 'meaning' => 'life', 'number' => 42 );
    $a['life'] = $a['meaning'];
    xdebug_debug_zval( 'a' );
    
    //结果
    a: (refcount=1, is_ref=0)=array (
       'meaning' => (refcount=2, is_ref=0)='life',
       'number' => (refcount=1, is_ref=0)=42,
       'life' => (refcount=2, is_ref=0)='life'
    )

    七、减少复合类型的引用计数

    <?php
    $a = array( 'meaning' => 'life', 'number' => 42 );
    $a['life'] = $a['meaning'];
    unset( $a['meaning'], $a['number'] );
    xdebug_debug_zval( 'a' );
    
    //结果
    a: (refcount=1, is_ref=0)=array (
       'life' => (refcount=1, is_ref=0)='life'
    )

    八、特殊情况

    <?php
    $a = array( 'one' );
    $a[] = &$a;
    xdebug_debug_zval( 'a' );
    
    //结果
    a: (refcount=2, is_ref=1)=array (
       0 => (refcount=1, is_ref=0)='one',
       1 => (refcount=2, is_ref=1)=...
    )

    九、清理变量容器的问题

    十、回收周期

    十一、回收算法分析

    十二、性能考虑

    十三、垃圾回收机制的结论

    推荐学习:《PHP视频教程

    以上就是一文聊聊php中的垃圾回收机制的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php 垃圾回收机制
    上一篇:一文聊聊php中的DI依赖注入 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• php数组怎么循环前几个元素• php数组怎么遍历替换某一字段(键名)的值• php交换数组键与值用什么函数• 将数组分成几段的php函数是什么• php怎么查询指定值是数组中的第几个元素• 实例详解PHP如何在两个大文件中找出相同记录
    1/1

    PHP中文网