已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 讨论/求助

标题: PHP 变量都存储在内存中的哪个区域?

作者: @Ta

时间: 2021-10-07发布,2021-10-07修改

点击: 11874

说明

以下是我对于 PHP内存 做的一些笔记,大家能否帮我看有无错误

内存区域

区域 存放数据
栈内存 运行中的函数/方法,以及其中已知固定大小的变量,如整数、布尔值
堆内存 大小不固定的变量,如对象、数组等
代码区 加载类、函数等代码进来
全局区 全局变量、静态变量、常量
项目 存放区域
static 修饰的方法 代码区
static 修饰的闭包 堆内存(因为闭包是 Closure 对象)
static 修饰的属性 全局区
const 修饰的类属性 全局区

综上,在 swoole 使用 static 修饰闭包,不会导致内存泄露,因为无论有无 static 修饰,闭包都是存储在堆内存中的。为避免内存泄露,需要留意保存在全局区的全局变量、静态变量等
小米MIX2s(白)


[隐藏样式|查看源码]


『回复列表(20|隐藏机器人聊天)』

1.  &$value
(/@Ta/2021-10-07 23:52//)

2.

@胡椒舰长,不理解你表达啥
小米MIX2s(白)

(/@Ta/2021-10-08 02:19//)

3.

发现一个 chromebug , 选中带有 & 字符的文本,搜索选项会自带一个 (
image.png
小米MIX2s(白)

(/@Ta/2021-10-08 13:03//)

4.

@水木易安,还真是
小米MIX2s(白)

(/@Ta/2021-10-08 16:03//)

5.
看来我只能去看PHP内存管理相关源码以及文章了 小米MIX2s(白)
(/@Ta/2021-10-08 20:05//)

6. @天蓝,恕我孤陋寡闻哈,php需要管理内存?你怕占用过高就用unset,可能是我应用太初级哈,我从来没遇到这种问题,因为我连内存地址都读不到

你说的倒是很像c语言https://www.cnblogs.com/yif1991/p/5049638.html   https://blog.csdn.net/youoran/article/details/10990815
还有这篇误导的,php和c很像不代表他是c啊,https://blog.csdn.net/weixin_36275605/article/details/115501325 
(/@Ta/2021-10-08 21:04//)

7. @,php一样可以编写常驻内存的程序,自然是需要内存管理,是带有gc的
(/@Ta/2021-10-09 17:30//)

8. @缘儿,php引擎当然是带有gc,php运行过程中内存回收机制是自动的,这个你可以去查,哪需要你进行内存管理,就算使用swoole扩展或cli模式运行,你需要考虑的是也只是把数据存在内存中共享而已,以及避免内存溢出(数据堆积过多爆内存而已),就算他也算内存管理,swoole扩展内的内存管理和php又有多大关系呢?至于他提的栈内存、堆内存的概念,对于php你能申请堆内存吗?
(/@Ta/2021-10-09 20:51//)

9.

@,我并不想管理PHP内存,我只是想知道PHP是如何管理内存的,现在准备去看鸟哥的博客了
小米MIX2s(白)

(/@Ta/2021-10-10 13:00//)

10. @天蓝,这个文章有说明https://blog.csdn.net/phpkernel/article/details/5734743
简单点就是遍历判断这个数据还有没有用,没用就释放掉。php5数据在堆区,php7采取了新的zval机制http://mip.oh100.com/kaoshi/php/345687.html
(/@Ta/2021-10-10 13:38//)

11. @,所以我说php有gc不对吗?
(/@Ta/2021-11-30 10:36//)

12. @缘儿,对对对,举一反三,vb、python、java都有gc,你没意见吧,管他是不是编译器的
(/@Ta/2021-11-30 10:44//)

13. @,对啊,我只是说php有gc啊,你又扯swoole又扯zval的,zval可以吧string,array,object这类复杂的数据类型放栈上?
(/@Ta/2021-11-30 11:10//)

14. @,还有php这类语言的内存管理全在解释器里面,看不见的不代表没有
(/@Ta/2021-11-30 11:11//)

15. @缘儿,我的意思明显是php不需要自己管内存,你又来句可以编常驻内存程序,而且我也回复了你引擎有GC的,你扯毛线呢
(/@Ta/2021-11-30 11:15//)

16. @,通篇都是你在扯吧,我说的本身就是解释器层面的内存管理
(/@Ta/2021-11-30 11:18//)

17. @,我也没说过需要手动管理内存啊
(/@Ta/2021-11-30 11:23//)

18. @缘儿,就是这句,我以为你说的是手动层面的
22fd8cd5cb953564ebaffec77627c94.png
(/@Ta/2021-11-30 11:26//)

19. @缘儿,都过了两个月了,非要来对线
(/@Ta/2021-11-30 11:27//)

下一页 1/2页,共20楼

回复需要登录

7月4日 23:16 星期五

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1