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网站提速三大“软”招
Oct 09 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
Feb 21 PHP
深入eAccelerator与memcached的区别详解
Jun 06 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
PHP函数strip_tags的一个bug浅析
May 22 PHP
php从csv文件读取数据并输出到网页的方法
Mar 14 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
php实现计算百度地图坐标之间距离的方法
May 05 PHP
PHP读取文件的常见几种方法
Nov 03 PHP
简述php环境搭建与配置
Dec 05 PHP
php 访问oracle 存储过程实例详解
Jan 08 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 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 XML操作类DOMDocument
2009/12/16 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
python之super的使用小结
2018/08/13 Python
pyshp创建shp点文件的方法
2018/12/31 Python
python中的句柄操作的方法示例
2019/06/20 Python
pytorch之添加BN的实现
2020/01/06 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
办公室主任职责范本
2014/03/07 职场文书
安全生产计划书
2014/05/04 职场文书
2016党员干部反腐倡廉心得体会
2016/01/13 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
Nginx源码编译安装过程记录
2021/11/17 Servers