Home > Backend Development > PHP Tutorial > 内存管理 - PHP脚本运行的时候,那些变量被放到了栈内存,那些被保存到了堆内存?

内存管理 - PHP脚本运行的时候,那些变量被放到了栈内存,那些被保存到了堆内存?

WBOY
Release: 2016-06-06 20:27:26
Original
1578 people have browsed it

PHP脚本运行的时候,那些变量被放到了栈内存,那些被保存到了堆内存?

回复内容:

PHP脚本运行的时候,那些变量被放到了栈内存,那些被保存到了堆内存?

使用堆还是栈来存储数据是由PHP引擎决定的,PHP开发者不需要关心.

转:
在PHP5的Zend Engine的实现中,所有的值都是在堆上分配空间,并且通过引用计数和垃圾收集来管理.
PHP5的Zend Engine主要使用指向zval结构的指针来操作值,在很多地方甚至通过zval的二级指针来操作.
而在PHP7的Zend Engine实现中,值是通过zval结构本身来操作(非指针).
新的zval结构直接被存放在VM的栈上,HashTable的桶里,以及属性槽里.
这样大大减少了在堆上分配和释放内存的操作,还避免了对简单值的引用计数和垃圾收集.

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template