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 相关文章推荐
PHP中计算字符串相似度的函数代码
Dec 29 PHP
关于zend studio 出现乱码问题的总结
Jun 23 PHP
PHP-Fcgi下PHP的执行时间设置方法
Aug 02 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 PHP
Codeigniter校验ip地址的方法
Mar 21 PHP
10个超级有用的PHP代码片段果断收藏
Sep 23 PHP
Symfony2在Nginx下的配置方法图文教程
Feb 04 PHP
微信公众号实现会员卡领取功能
Jun 08 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
PHP简单实现正则匹配省市区的方法
Apr 13 PHP
PHP检查端口是否可以被绑定的方法示例
Aug 09 PHP
Ajax+PHP实现的删除数据功能示例
Feb 12 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
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
php导出CSV抽象类实例
2014/09/24 PHP
php中try catch捕获异常实例详解
2014/11/21 PHP
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
Js的MessageBox
2006/12/03 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
2019/04/09 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
[37:22]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第一局
2016/02/28 DOTA
python读文件逐行处理的示例代码分享
2013/12/27 Python
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
python 代码运行时间获取方式详解
2020/09/18 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
网络安全方面的面试题
2016/01/07 面试题
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
怎样有效的进行自我评价
2013/10/06 职场文书
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
幼儿园新年寄语
2014/04/03 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL