gor*_*i93 5 php dynamic-languages heap-memory stack-memory
我正在学习操作系统,而我完全不了解的是堆栈和堆栈.我知道它们的好处以及它们的工作原理,但在动态语言的情况下,我无法弄清楚堆栈是如何分配的.
在静态类型语言中,所有原始数据类型都存储在堆栈中,因为它们很小并且将按照它们分配的相同顺序或多或少地解除分配,但是在像PHP这样的语言中,这在运行时才知道.那么堆栈大小和变量分配怎么可能呢?
如果我理解正确,则通过分析原始数据类型的数量和一些偏移量来确定堆栈大小.如何在PHP或其他动态语言中完成该过程?
如果这个问题在黑暗中发生,请给我一些指导如何了解这一点
If I understand it correctly, all PHP data types are zval. And zval is basing on a few "Z" data type (defined in C). There are limit number of "real" data type. I believe they are stored in the stack.
因此,虽然用户可以创建新的数据类型,但它们不是“真正的”数据类型,而是不同的zval值。并且“真实”数据类型的数量和定义是稳定的。因此堆栈的大小和内容在运行时不会改变。
内存的大小是有限的。PHP 必须主动进行引用计数和垃圾收集。有关更多详细信息,请阅读这张有关 PHP 内存管理的幻灯片。
| 归档时间: |
|
| 查看次数: |
6807 次 |
| 最近记录: |