PHP-php对内存是如何消耗的,如何能优化其内存呢

PHP-php对内存是如何消耗的,如何能优化其内存呢

清晨说ぺ晚安 发布于 2017-04-21 字数 0 浏览 1179 回复 3

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

偏爱自由 2017-10-19 3 楼

这个,你开发的时候建议使用面向对象方式
1.数组使用建议使用完就清空
2.数据库连接使用完就断开。
3.减少与数据库的交互。

虐人心 2017-09-02 2 楼

PHP有时候经常报内存溢出错误,所以我们有时候要经常查看一下内存消耗情况,使用memory_get_usage()函数可获取当前的内存消耗情况,当消耗过大时候就要考虑优化一下你的php代码了,通常我们对变量释放内存的时候用unset()来手工调用来释放内存,这里我说一种特殊情况内存不会得到自动释放,即便是手动调用 unset()。如果两个对象之间存在着相互引用的关系,如“父对象-子对象”,对父对象调用 unset() 不会释放在子
对象中引用父对象的内存(即便父对象被垃圾回收,也不行)参考:https://bugs.php.net/bug.php?id=33595

这种情况如果在你的一个长期运行的代码中使用到了一大堆相互引用的对象,尤其是在对象相对较大的情况下,内存会迅速地消耗殆尽。

还有注意的是在定义类的时候,一定要定义销毁类的方法: __destruct(),该方法可将所有内部的父对象引用全部清除,以避免上面的那种特殊情况。

归属感 2017-07-31 1 楼

一、PHP的内存管理:

PHP的内存空间分为:栈空间段、堆空间段、代码段、初始化静态段四个不同的内存空间。所以,数据段(data segment)通常是指用来存放程序中已初始化且不为0的全局变量如:静态变量和常量;代码段(code segment / text segment)通常是指用来存放程序执行代码的一块内存区域,比如函数和方法;栈空间段是存储占用相同空间长度并且占用空间小的数据类型的地方,比如说整型1,10,100,1000,10000,100000 等等,在内存里面占用空间是等长的,都是64 位4 个字节。那么数据长度不定长,而且占有空间很大的数据类型的数据放在那内存 的那个段里面呢?这样的数据是放在堆内存里面的。栈内存是可以直接存取的,而堆内存是 不可以直接存取的内存。对于我们的对象来数就是一种大的数据类型而且是占用空间不定长的类型,所以说对象是放在堆里面的,但对象名称是放在栈里面的,这样通过对象名称就可以使用对象了。

二、PHP的内存优化:

 1、PHP的垃圾回收机制是采用的引用计数,所以当不需要使用的变量时尽量手动在程序里unset()掉,如果是大的变量或者数组能使用引用的就使用引用来传递。

 2、像MySQL这样的连接也尽量手动释放其所占用的内存。可以使用mysql_free_result() 函数

3、尽量查看PHP文件的执行时间,找出程序的执行瓶颈,然后对其优化。