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

先上图:

PHP高手应该了解的php内存机制_第1张图片

解释一下这个图:


	(上图由于粗心,出现了错误,其实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释放掉,运行结束后,释放所有栈内存和堆内存。

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

你可能感兴趣的:(php)