PHP是一种解释性的脚本语言,跟Java,C语言这种需要编译的语言还不太一样,比如c语言声明一个变量时,比如是一个八位的整数,它会在程序运行前抢到一个八位整数的内存款,等到程序执行的时候,他就会把数据放在这个位置,但是PHP不是这样的,PHP是一种动态的脚本语言,程序不能控制内存的地址,PHP进程控制,PHP的进程,底层解释器来申请地址,控制,它在脚本执行时也会预估内存的使用,预开一块地址,在PHPfpm里会设置单进程的占用最大内存,有一个上限,所以使用内存多的时候内存就可能不够用了,所以它采用了一种方式就是呢,在声明变量时,并不直接把变量值给这个变量,变量有一个变量值列表,变量值列表,他通过谁指向谁的方式来声明谁用了谁的值,PHP是c写成的,C语言在实现这种方式时,所有的PHP变量声明在底层实现的时候使用了一种成员结构体,有点类似于累的属性的声明,没有方法体,其中有一个属性是refcount,来计算这个量被引用了几次,随着销毁变量,直到refcount变为零。PHP声明变量的时候先有一个结构体,一个存变量的地址,refcount存有多少个变量指向这个值。(周期性检查回收)比如停车位,如果你在一个小区住,有一个车位,就是说不管你每天开不开车回来这个车位都是你的,但是如果你都不打算买车的话,你还要这个停车位吗。
但是呢这个小区的停车位是否有人在用它都是在那的,但是他要是个老年人小区的话,他就可能没有停车位了。还有就是如果这个小区都已经拆迁了,这个停车位肯定是废弃了。所以它看的是这个车位现在有没有人使用和后期还会不会有人使用。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。