PHP通过内置函数memory_get_usage()获取内存使用情况


Posted in PHP onNovember 20, 2014

PHP内置函数memory_get_usage()能返回当前分配给PHP脚本的内存量,单位是字节(byte)。在WEB实际开发中,这些函数非常有用,我们可以使用它来调试PHP代码性能。
memory_get_usage()函数返回内存使用量,memory_get_peak_usage()函数返回内存使用峰值,getrusage()返回CUP使用情况。但有一点请注意,在这些函数需要在Linux上运行。
下面我们来看一个实例:

echo '开始内存:'.memory_get_usage(), ''; 

$tmp = str_repeat('hello', 1000);   

echo '运行后内存:'.memory_get_usage(), '';  

unset($tmp);   

echo '回到正常内存:'.memory_get_usage();

输出结果:

开始内存:147296 

运行后内存:152456 

回到正常内存:147296

例子中,我们使用str_repeat()将字符串“hello”重复了1000遍,最终来对比前后消耗的内存大小。由上面的例子可以看出,要想减少内存的占用,可以使用unset() 函数把不再需要使用的变量删除。类似还有mysql_free_result() 函数,当我们不再需要查询数据得到的结果集时,可以使用释放查询占用的内存。
函数memory_get_usage()还可以有个参数,$real_usage,其值为布尔值。如果设置为 TRUE,获取系统分配的真实内存尺寸。如果未设置或者设置为 FALSE,将是 emalloc() 报告使用的内存量。
在实际WEB开发中,可以用PHP memory_get_usage()比较各个方法占用内存的高低,来选择使用哪种占用内存小的方法。
函数memory_get_usage()返回的字节数(单位为 byte(s))。下面这个自定义函数将字节数转换成MB更容易阅读:

function memory_usage() { 

    $memory     = ( ! function_exists('memory_get_usage')) ? '0' : round(memory_get_usage()/1024/1024, 2).'MB'; 

    return $memory; 

}

常用的调试检测PHP代码性能的方法有:
memory_get_usage可以分析内存占用空间。
用microtime函数就可以分析程序执行时间。

以上就是使用memory_get_usage获取php代码占用内存的全部内容了,本函数十分的高效,有需要的小伙伴可以参考下

PHP 相关文章推荐
WHOIS类的修改版
Oct 09 PHP
粗略计算在线时间,bug:ip相同
Dec 09 PHP
php 短链接算法收集与分析
Dec 30 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
Oct 03 PHP
Laravel 5框架学习之环境与配置
Apr 08 PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 PHP
php打乱数组二维数组多维数组的简单实例
Jun 17 PHP
Yii模型操作之criteria查找数据库的方法
Jul 15 PHP
基于PHP实现短信验证码接口(容联运通讯)
Sep 06 PHP
php+js实现百度地图多点标注的方法
Nov 30 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
IIS下PHP的三种配置方式对比
Nov 20 #PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 #PHP
php目录遍历函数opendir用法实例
Nov 20 #PHP
php中base_convert()进制数字转换函数实例
Nov 20 #PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
Nov 20 #PHP
PDO预处理语句PDOStatement对象使用总结
Nov 20 #PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 #PHP
You might like
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
php图片裁剪函数
2018/10/31 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
Javascript 遍历对象中的子对象
2009/07/03 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
基于js Canvas实现二次贝塞尔曲线
2018/12/25 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
2019/05/07 Javascript
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
在Django框架中运行Python应用全攻略
2015/07/17 Python
Python出现segfault错误解决方法
2016/04/16 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
公司活动策划方案
2014/01/13 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
校运会口号
2014/06/18 职场文书
预备党员转正材料
2014/12/19 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
k-means & DBSCAN 总结
2021/04/27 Python
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL