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 相关文章推荐
递归列出所有文件和目录
Oct 09 PHP
php adodb连接mssql解决乱码问题
Jun 12 PHP
php抓取https的内容的代码
Apr 06 PHP
PHP跨时区(UTC时间)应用解决方案
Jan 11 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
Aug 09 PHP
单台服务器的PHP进程之间实现共享内存的方法
Jun 13 PHP
PHP获取指定月份第一天和最后一天的方法
Jul 18 PHP
PHP实现简单汉字验证码
Jul 28 PHP
理解PHP中的Session及对Session有效期的控制
Jan 08 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 PHP
深入解析PHP中SESSION反序列化机制
Mar 01 PHP
PHP实现将base64编码字符串转换成图片示例
Jun 22 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 curl库实现整站克隆功能
2015/02/12 PHP
PHP中header用法小结
2016/05/23 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
PDO::setAttribute讲解
2019/01/29 PHP
使用Apache的rewrite
2021/03/09 Servers
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
2012/03/01 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
Javascript中Event属性搜集整理
2013/09/17 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
JavaScript 基本概念
2015/01/20 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
2016/05/27 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
JavaScript"模拟事件"的注意要点详解
2019/02/13 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
微信小程序如何实现点击图片放大功能
2020/01/21 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
对Python中9种生成新对象的方法总结
2018/05/23 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
python可视化实现KNN算法
2019/10/16 Python
Python sys模块常用方法解析
2020/02/20 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
基于django micro搭建网站实现加水印功能
2020/05/22 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
2014年保安个人工作总结
2014/11/13 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
婚育证明样本
2015/06/16 职场文书
治庸问责工作总结
2015/08/11 职场文书
Python利用FlashText算法实现替换字符串
2022/03/31 Python