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 相关文章推荐
discuz论坛 用户登录 后台程序代码
Nov 27 PHP
PHP Zip压缩 在线对文件进行压缩的函数
May 26 PHP
初学PHP的朋友 经常问的一些问题。不断更新
Aug 11 PHP
PHP数组实例总结与说明
Aug 23 PHP
php定时计划任务与fsockopen持续进程实例
May 23 PHP
PHP递归调用数组值并用其执行指定函数的方法
Apr 01 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
php实现比较两个字符串日期大小的方法
May 12 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
Jun 22 PHP
php+mysql开发中的经验与常识小结
Mar 25 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
Jun 03 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生成zip文件类实例
2015/04/07 PHP
Zend Framework教程之配置文件application.ini解析
2016/03/10 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
PHP如何通过date() 函数格式化显示时间
2020/11/13 PHP
form中限制文本字节数js代码
2007/06/10 Javascript
JS 控制CSS样式表
2009/08/20 Javascript
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
jQuery Checkbox 全选 反选的简单实例
2016/11/29 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
JS原型prototype和__proto__用法实例分析
2020/03/14 Javascript
python字典排序实例详解
2015/05/20 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
解读python如何实现决策树算法
2018/10/11 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
python获取本机所有IP地址的方法
2018/12/26 Python
python基于Selenium的web自动化框架
2019/07/14 Python
python psutil模块使用方法解析
2019/08/01 Python
Django如何实现密码错误报错提醒
2020/09/04 Python
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
波兰珠宝品牌:YES
2019/08/09 全球购物
怎么样写好简历中的自我评价
2013/10/25 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
销售口号大全
2014/06/11 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android
浅析JavaScript中的变量提升
2022/06/01 Javascript
win10搭建配置ftp服务器的方法
2022/08/05 Servers