资讯专栏INFORMATION COLUMN

PHP内存模型

Maxiye / 1356人阅读

摘要:为单进程的由代执行每一个请求由从进程池中取出进程初始化数据结构创建进程变量共享类似于的内容为所有进程所共享即单例模式默认是采用磁盘文件实现的管理即变量是一次请求说多带带的享有的不能被所有请求所共享共享由于每次请求代由创建进程所以由共享问题是使

php为单进程的,由apache代执行,每一个请求,由apache从进程池中取出进程,初始化数据结构,创建进程.

变量共享,类似于session的内容,为所有进程所共享,即单例模式.默认是采用磁盘文件实现session的管理

即static变量,是一次请求说多带带的享有的,不能被所有请求所共享.

session共享

由于每次请求代由apache创建进程,所以由session共享问题,php是使用文件的机制达到session共享.

内存管理

和C语言一样,同样具有相关的函数
https://www.php.net/manual/zh...

php生命周期

这里一张图概述

Zend虚拟机

php的引擎为Zend虚拟机
其中Zend虚拟机和js虚拟机类似,感觉一个内容
运行流程

Zend和php关系

Zend Technologies公司来管理PHP的开发

内存泄漏

由于php属于高级语言,自动管理内存,但是依旧会有内存泄漏的问题.

使用valgrind进行内存泄漏的分析

php内存管理

分为三层 存储层(storage)、堆层(heap)和接口层(emalloc/efree)

一张图

php是使用链来管理的.

一张图

定义一个数组指针,每次通过数组指针指向所请求的内存空间

在单个请求初始化的时候,内核会初始化free_buckets列表,其是一个数组指针,通过存储的是双向链表的头尾指针,用来达到对内存的管理

关于js的内存

js的内存的使用原型链的方式,有一个总的windows节点,每次创建的时候,会挂载到windows节点上

关于java内存

之前说明的全是动态语言的内存机制,现在说明静态语言,以java为例,每次写好java文件以后,编译生成class文件,class文件即定义了内存的结构,使用装载命令,装载进入内存,即内存结构被固定化. 在运行的期间,当使用new命令,将会根据class文件定义的内存模型,在jvm的虚拟机中的创建出一样的对象,并进行指向,运算的时候,本质通过栈进行运算.

通过这种方式,静态语言模拟动态语言.

关于动静态语言

静态语言定义好的内存结构,进行运算即可

动态语言,和原型链类型,进行加载上去即可.

垃圾回收

之前php只是简单的引用计数法进行垃圾回收.
不想看了 http://docs.php.net/manual/zh...
https://researcher.watson.ibm...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31554.html

相关文章

  • 如何让PHP性能问题不再饱受诟病

    摘要:作为开发中应用最广泛的开源脚本语言,凭借库类丰富,使用简单,安全等特点,成为和等互联网巨头和全球超过网站的主要开发语言,然而性能问题是一直以来饱受诟病的,来自开发组的高驰涛同学将为我们带来他对性能优化方面的思考和建议。 PHP作为Web开发中应用最广泛的开源脚本语言,凭借库类丰富,使用简单,安全等特点,成为Facebook和BAT等互联网巨头和全球超过70%网站的主要开发语言,然而性能...

    warnerwu 评论0 收藏0
  • [gist]为什么事件驱动服务器这么火

    摘要:两个事件驱动模型服务器平均每秒处理的请求数为服务器的一倍,而内存降低了一半。事件驱动模型的出现,是为了解决传统服务器与网络工作负载的需求的不匹配,实现高度可伸缩服务器,并降低内存开销。 from http://oyanglul.us 本文基本上这为两篇文章的翻译和整合 -...

    fsmStudy 评论0 收藏0
  • PHP并发IO编程之路

    摘要:下文如无特殊声明将使用进程同时表示进程线程。收到数据后服务器程序进行处理然后使用向客户端发送响应。现在各种高并发异步的服务器程序都是基于实现的,比如。 并发 IO 问题一直是服务器端编程中的技术难题,从最早的同步阻塞直接 Fork 进程,到 Worker 进程池/线程池,到现在的异步IO、协程。PHP 程序员因为有强大的 LAMP 框架,对这类底层方面的知识知之甚少,本文目的就是详细介...

    Riddler 评论0 收藏0
  • 编程语言的心智负担

    摘要:心智负担因此在中建议使用或函数代替宏。心智负担等编程语言,默认整数为有符号,降低了心智负担。而动态弱类型语言可能会因为重构或其他维护操作产生运行时错误,增加了心智负担。心智负担而且异步的等无需担心此问题。 很多编程语言对比的文章,总喜欢比较各种编程语言的性能、语法、IO模型。本文将从心智负担这个角度去比较下不同的编程语言和技术。因本人所擅长的编程语言有限,如有不对的地方,欢迎指正。 内...

    zhangke3016 评论0 收藏0
  • php极简框架 one 1.6.7发布,新增分布式并发模型Actor

    摘要:新增新增模型方法,主动刷新数据表结构缓存。分布式并发模型是什么是一种与共享内存对应的并发模型,具有资源独占性。都分布在不同的机器上。 One - 极简 . 高性能 . 松耦合 . 分布式 . 可运行于多种环境(cli,apache/php-fpm,swoole) 码云: https://gitee.com/vicself/onegithub: https://github.com/li...

    刘明 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<