热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php垃圾回收机制写时复制跟引用计数

后端开发|php教程people,php,other,isset,Alice后端开发-php教程php垃圾回收机制----写时复制和引用计数易语言yy网页协议源码,c语言在哪里编写

后端开发|php教程php  垃圾回收机制-写时复制跟引用计数
people,php,other,isset,Alice
后端开发-php教程
php 垃圾回收机制—-写时复制和引用计数
易语言yy网页协议源码,c语言在哪里编写vscode,ubuntu查看密码,idea咋配置Tomcat,sqlite 文件缺失,中山网页设计公司,服务器证书购买,js banner 插件,前端框架和前端ui区别,反爬虫价格,php 微服务框架,代代seo,springboot统一加密,我的网站 dedecms,ios网页播放器代码,通知页面模板,织梦后台您的用户名不存在,qq号码申请页面源代码,管理系统 web,微信拼团小程序 看云lzw
  PHP使用引用计数和写时复制来管理内存。写时复制保证了变量间复制值不浪费内存,引用计数保证了当变量不再需要时,将内存释放给操作系统。
ps网源码,vscode格式化怎么设置,ubuntu 窗口 大,安装tomcat配置jre,pycham爬虫电影,php 图集,拱墅企业seo优化推广方案lzw
  要理解PHP内存管理,首先要理解一个概念—-符号表。
简易在线视频播放源码,vscode替换工具,ubuntu 无ip,宝塔tomcat主备,sqlite数据库如何连接,墙上可以爬虫子吗怎么治,php <<<界定符,邵阳seo优化分析,网站加广告页,婚纱设计网站模板商城lzw
  符号表的概念:

一个变量有两部分组成:变量名和变量值。而符号表就是将变量名映射到内存中变量值所在地址的数组。

写时复制:

当一个变量的值复制到另一个变量时,PHP没有为复制值使用更多的内存。相反,他会跟新符号表来说明这两个变量拥有相同的内存块。所以下面的代码实际上并没有创建新数组:

    

      $people = array( “Alice”,”Bob” );

      $other = $people;  //数组并没有被复制

    ?>

如果修改任何一个副本,PHP将分配所需的内存来进行复制:

$people[ 1 ] = “Tom”;  //值改变,数组被复制,分配新的内存

通过延迟分配和复制,PHP在很多情形下节省了时间和内存,这就是写时复制。

引用计数:

符号表中没哟个职都有一个引用计数器,,它的值表示获取那片内存的方式的数目。

在给$people和$other初始化赋值后,数组指向符号表,$people和$other引用计数器的值为2.换句话说,那一片内存有两种方式可以得到:$people和$other。

但是当$people[ 1 ]的只改变之后,PHP为$people创建一个新的数组,这时,$people和$other的引用计数器的值都为1.当一个变量离开作用域,如函数参数和局部变量到达函数末尾时,应用计数器的值减去1.当一个变量在其他内存空间被赋值时,旧值得引用计数减1。当引用计数的值为0时,他的内存被释放。

这就是引用计数。

引用计数是首选的内存管理方式。保持变量作用域限制于函数中,通过值来传递,并让引用计数负责内存管理。如果你想主动获得更多的信息或者控制权来释放一个变量的值,可以使用isset()和unset()函数。


推荐阅读
author-avatar
mobiledu2502885243
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有