PHP内核研究(内存管理1)
来源:互联网 发布:js ul li点击显示隐藏 编辑:程序博客网 时间:2024/05/26 09:55
PHP内存管理
- PHP在5.3之前采用的是引用计数法
- PHP在5.3之后采用了新的垃圾回收机制
操作系统在申请内存空间的时候回引发系统调用
- 在操作系统申请内存空间的时候,会将CPU从用户态切换到内核态,切换成本很高(会导致性能问题)
PHP的默认最大内存使用时32M
在php.ini中memory_limit=32M
或者采用动态方式修改最大内存:
<?phpini_set("memory_limit","128M"); //修改内存为128M>
获取目前内存使用情况
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都有自己的哈希函数。
0 0
- PHP内核研究(内存管理1)
- linux内核研究-7-内存管理
- php内核分析---内存管理(一)
- PHP内核原理(二)内存管理
- 内存管理深入研究
- Java 内存管理研究
- PHP内核--探究内存管理与缓存机制
- 内存管理1(内核情景分析)
- 内存管理(1)-linux内核体系结构(2)
- linux内核内存管理
- linux内核内存管理
- Linux内核--内存管理
- linux 内核 内存管理
- 内核如何管理内存
- linux内核-内存管理
- Linux内核--内存管理
- [ULK08]内核内存管理
- linux内核内存管理
- 再谈依赖注入(依赖注入的简单实现)
- DataBinding框架初体验
- 解决Fedora解压文件产生乱码的问题
- PHP的反射机制
- PHP开发知识
- PHP内核研究(内存管理1)
- 设计模式1: 策略模式(Strategy)
- php的<?php ?>标签匹配
- Ajax中Get请求与Post请求的区别
- Redis学习
- 使用James搭建一个自己的邮箱服务器
- 动态获取屏幕宽度,并减去了浏览器左边滚动条的宽度
- OpenGL的简单研究-开端
- kettle--从java中获取参数