PHP的垃圾回收机制(PHP面试理论题)

您所在的位置:网站首页 垃圾回收机制php PHP的垃圾回收机制(PHP面试理论题)

PHP的垃圾回收机制(PHP面试理论题)

2023-08-15 05:58| 来源: 网络整理| 查看: 265

目录 一、官方解释 PHP的垃圾回收机制

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

垃圾回收,简称gc。顾名思义,就是废物重利用的意思。如果用过C语言,那么申请内存的方式是malloc或者是calloc,然后你用完这个内存后,一定不要忘了用free函数去释放掉,这就是传说中手动垃圾回收,一般都是扫地神僧用这种方式。

那么,在用的最普遍地最传统的web开发中,php的自动垃圾回收机制是怎样的呢? 这个问题我们先这么想,就是都知道php是C语言实现的,现在把C语言给你放在这里了,然后你想想如何用C语言实现对一个变量的统计以及释放。

PHP进行内存管理的核心算法一共两项:一是引用计数,二是写时拷贝,请理(bei)解(song)。当你声明一个PHP变量的时候,C语言就在底层给你搞了一个叫做zval的struct(结构体);如果你还给这个变量赋值了,比如“hello world”,那么C语言就在底层再给你搞一个叫做zend_value的union(联合体),总体看来就是这样的:

好了,进入代码实战阶段,注意两点:

用的PHP版本是7.1.17(记住!这个很重要!不同版本的PHP有极大可能会出现不相同的结果!我试过6个版本的PHP,三个PHP5版本,三个7版本,其中PHP7版本变化尤其多,但不影响业务代码不会出bug,放心),运行环境是cli。

下面的原理解只针对PHP7,不再说5了。你面试的时候,只需要说5的我不太了解,7的我深入看过一些即可,面试官不会难为你的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3