PHP7变量在内核中存储方式
来源:互联网 发布:h5单页商品详情源码 编辑:程序博客网 时间:2024/06/09 21:27
PHP7终于千呼万唤始出来,今天想通过查看源码看看变量中的存储方式,并计算剩了多少内存。
先看看PHP7(PHP5.3.17)之前变量的相关代码。
typedef unsigned int zend_object_handle;typedef struct _zend_object_value { zend_object_handle handle; zend_object_handlers *handlers;} zend_object_value;typedef union _zvalue_value { long lval; /* long value */ double dval; /* double value */ struct { char *val; int len; } str; HashTable *ht; /* hash table value */ zend_object_value obj;} zvalue_value;struct _zval_struct { /* Variable information */ zvalue_value value; /* value */ zend_uint refcount__gc; zend_uchar type; /* active type */ zend_uchar is_ref__gc;};在32位系统中一个变量的大小为16字节。
再看看PHP7中变量的相关代码。
typedef union _zend_value { zend_long lval; /* long value */ double dval; /* double value */ zend_refcounted *counted; zend_string *str; zend_array *arr; zend_object *obj; zend_resource *res; zend_reference *ref; zend_ast_ref *ast; zval *zv; void *ptr; zend_class_entry *ce; zend_function *func; struct { uint32_t w1; uint32_t w2; } ww;} zend_value;struct _zval_struct { zend_value value; /* value */ union { struct { ZEND_ENDIAN_LOHI_4( zend_uchar type, /* active type */ zend_uchar type_flags, zend_uchar const_flags, zend_uchar reserved) /* call info for EX(This) */ } v; uint32_t type_info; } u1; union { uint32_t var_flags; uint32_t next; /* hash collision chain */ uint32_t cache_slot; /* literal cache slot */ uint32_t lineno; /* line number (for ast nodes) */ uint32_t num_args; /* arguments number for EX(This) */ uint32_t fe_pos; /* foreach position */ uint32_t fe_iter_idx; /* foreach iterator index */ } u2;};在32位系统中一个变量的大小为16字节。
0 0
- PHP7变量在内核中存储方式
- php变量在内核中的存储方式
- PHP变量在内核中的存储方式
- PHP变量在zend内核中的存储方式
- 变量在计算机中的存储方式。
- 汇编中变量定义的存储方式
- PHP源码中变量存储方式
- C语言中变量的存储方式
- C语言中变量的存储类别及其存储方式
- 在存储过程中 给变量赋值
- Extjs 在组件件中存储变量
- 存储在变量 sys.argv 中
- [转]PHP7内核剖析之变量的内部实现
- PHP7内核剖析之变量的内部实现
- 变量存储方式
- Java变量存储方式
- 变量的存储方式
- 浮点数在计算机中存储方式
- Qt中的"隐式共享"
- Android下基于Iptables的一种app网络访问控制方案(二)
- web.xml配置详解
- java笔记-构造函数
- 第15周、项目2.1—用哈希法组织关键字
- PHP7变量在内核中存储方式
- 第十周项目一:二叉树算法库
- 结构化风险最小、VC维到SVM的理解
- 直接插入排序 .
- 第十五周 项目一 验证算法
- 第十五周-哈希表及其运算的实现
- ActiveMQ入门实例
- 数据结构实践——Kruskal算法的验证
- 一些shader 代码