PHP的引用计数是如何实现对象引用跟踪和内存管理的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2066个文字,预计阅读时间需要9分钟。
目录- 什么是引用计数- 如何查看引用计数- 对象的引用计数- 数组的引用计数- 关于内存泄漏需要注意的地方- 总结- 什么是引用计数- 在PHP的数据结构中,引用计数指的是每个变量指向的对象或数组的引用数量。
目录
- 什么是引用计数
- 怎么查看引用计数?
- 对象的引用计数
- 数组的引用计数
- 关于内存泄露需要注意的地方
- 总结
什么是引用计数
在PHP的数据结构中,引用计数就是指每一个变量,除了保存了它们的类型和值之外,还额外保存了两个内容,一个是当前这个变量是否被引用,另一个是引用的次数。为什么要多保存这样两个内容呢?当然是为了垃圾回收(GC)。也就是说,当引用次数为0的时候,这个变量就没有再被使用了,就可以通过 GC 来进行回收,释放占用的内存资源。任何程序都不能无限制的一直占用着内存资源,过大的内存占用往往会带来一个严重的问题,那就是内存泄露,而 GC 就是PHP底层自动帮我们完成了内存的销毁,而不用像 C 一样必须去手动地 free 。
怎么查看引用计数?
我们需要安装 xdebug 扩展,然后使用 xdebug_debug_zval() 函数就可以看到指定内存的详细信息了,比如:
$a = "I am a String"; xdebug_debug_zval('a'); // a: (refcount=1, is_ref=0)='I am a String'
从上述内容中可以看出,这个 $a 变量的内容是 I am a String 这样一个字符串。
本文共计2066个文字,预计阅读时间需要9分钟。
目录- 什么是引用计数- 如何查看引用计数- 对象的引用计数- 数组的引用计数- 关于内存泄漏需要注意的地方- 总结- 什么是引用计数- 在PHP的数据结构中,引用计数指的是每个变量指向的对象或数组的引用数量。
目录
- 什么是引用计数
- 怎么查看引用计数?
- 对象的引用计数
- 数组的引用计数
- 关于内存泄露需要注意的地方
- 总结
什么是引用计数
在PHP的数据结构中,引用计数就是指每一个变量,除了保存了它们的类型和值之外,还额外保存了两个内容,一个是当前这个变量是否被引用,另一个是引用的次数。为什么要多保存这样两个内容呢?当然是为了垃圾回收(GC)。也就是说,当引用次数为0的时候,这个变量就没有再被使用了,就可以通过 GC 来进行回收,释放占用的内存资源。任何程序都不能无限制的一直占用着内存资源,过大的内存占用往往会带来一个严重的问题,那就是内存泄露,而 GC 就是PHP底层自动帮我们完成了内存的销毁,而不用像 C 一样必须去手动地 free 。
怎么查看引用计数?
我们需要安装 xdebug 扩展,然后使用 xdebug_debug_zval() 函数就可以看到指定内存的详细信息了,比如:
$a = "I am a String"; xdebug_debug_zval('a'); // a: (refcount=1, is_ref=0)='I am a String'
从上述内容中可以看出,这个 $a 变量的内容是 I am a String 这样一个字符串。

