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 相关文章推荐
WINDOWS 2000下使用ISAPI方式安装PHP
Sep 05 PHP
Dedecms常用函数解析
Feb 01 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
Apr 15 PHP
memcached 和 mysql 主从环境下php开发代码详解
May 16 PHP
PHP无敌近乎加密方式!
Jul 17 PHP
php array的学习笔记
May 16 PHP
php中explode与split的区别介绍
Oct 03 PHP
php删除数组元素示例分享
Feb 17 PHP
PHP中调用SVN命令更新网站方法
Jan 07 PHP
php版银联支付接口开发简明教程
Oct 14 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 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
输出控制类
2006/10/09 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
php伪静态验证码不显示的解决方案
2019/09/26 PHP
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
WordPress JQuery处理沙发头像
2009/06/22 Javascript
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
Vue组件开发初探
2017/02/14 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
2017/03/30 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
详解JS预解析原理
2020/06/16 Javascript
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
Python中的xlrd模块使用原理解析
2020/05/21 Python
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
纪伊国屋泰国网上书店:Kinokuniya泰国
2017/12/24 全球购物
出国签证在职证明
2014/01/16 职场文书
学校师德承诺书
2014/05/23 职场文书
党员领导干部承诺书
2014/05/28 职场文书
企业文化宣传标语
2014/06/09 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
浅谈如何提高PHP代码的质量
2021/05/28 PHP
处理canvas绘制图片模糊问题
2022/05/11 Javascript
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android