PHP高手应该了解的php内存机制

先上图:

在这里插入图片描述

解释一下这个图:

	(上图由于粗心,出现了错误,其实1000那个值并没有开辟新的堆内存,只是修改的第一个堆内存的值:把10修改成了1000)

	首先,当我们声明一个变量时(比如$a = 10;),PHP的工作是:把$a这个名字存放在栈内存中,把它的值存放在堆内存中,它们
	
	之间通过某种机制进行绑定(具体是什么我也不大清楚 --)。


	$b = $a; 这个就比较容易理解了:这个时候,PHP的工作是:当我们使用 $a 变量的时候,PHP通过某种机制快速的找到变量相

	对应的值,然后把值赋给$b( php把$b存放在栈内存中,把10存放在堆内存中,这个10是通过$a取出来的 )。

	
	$c = &$a; 值引用:两个变量公用一个堆内存。这时候PHP的工作是:  把$a的绑定机制,复制一份给$c(这时候输出$c就是$a

	的值,$a变量的值变成什么,$c的值也就是什么,因为他们用的是同一个内存空间).

	
	unset($a);销毁这个变量,注意:PHP销毁的只是栈内存中$a这个变量,与之对应的堆内存中值并没有被销毁。 值是PHP垃圾回收机制

	回收的。

		
简单谈一下PHP垃圾回收机制

	PHP运行时,要把所有的代码加载到内存中运行,运行时会检测哪些变量没有被使用,没有被使用的变量(或者unset掉的变量),

	与之相对应堆内存中的值会被PHP释放掉,运行结束后,释放所有栈内存和堆内存。

以上内容由博主自己理解并总结的,如有错误,万分感谢各位大佬的指正!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值