您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 黑河分类信息网,免费分类信息发布

PHP内核研究(内存管理1)

2024/2/23 7:19:18发布24次查看
php内存管理
php在5.3之前采用的是引用计数法 php在5.3之后采用了新的垃圾回收机制 操作系统在申请内存空间的时候回引发系统调用 在操作系统申请内存空间的时候,会将cpu从用户态切换到内核态,切换成本很高(会导致性能问题) php的默认最大内存使用时32m
在php.ini中
memory_limit=32m
或者采用动态方式修改最大内存:

获取目前内存使用情况
memory_get_usage() //目前php脚本所用的内存大小memory_get_peak_usage() //返回当前位置占用内存峰值,这样就可以知道内存峰值autoload() //避免一次性包含不一定会使用的类
php的内存分布和管理 |应用层applecation||||
|-----|||
| 接口层 emalloc/efree|堆层heap|存储层storange||
|malloc|win32|mmap_anon|mmap_zero|
存储层:使用malloc和mmap向系统真正的申请空间,使用free函数释放 控制层:控制整个内存管理的过程(控制层php内存管理的核心) 使用宏定义来实现上层和下层分离(门面模式) 内存管理 初始化:
zend_mm_startup(); //初始化存储层zend_mm_startup_ex(); //初始化堆层zend_mm_seg_size //默认256*1024zend_mm_seg_size //默认的内存分配方案4种
php内存维护3个列表 小块内存表:free_buckets 大块内存表:larg_free_buckets 剩余内存表:rest_buckets
前两个为hashtable,每个hashtable都有自己的哈希函数。
黑河分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录