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 CLI实现简单的数据库实时监控调度
Jul 01 PHP
php学习之 循环结构实现代码
Jun 09 PHP
php中\r \r\n \t的区别示例介绍
Feb 08 PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
Apr 04 PHP
PHP进阶学习之命名空间基本用法分析
Jun 18 PHP
PHP使用phpunit进行单元测试示例
Sep 23 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 13 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 PHP
阿里云服务器搭建Php+Apache运行环境的详细过程
May 15 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中出现空白页的原因及解决方法汇总
2014/07/08 PHP
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
php生成验证码函数
2015/10/20 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
ExtJS自定义主题(theme)样式详解
2013/11/18 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
python处理excel绘制雷达图
2019/10/18 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
介绍一下常见的木马种类
2014/11/15 面试题
如何进行Linux分区优化
2016/09/13 面试题
2014年国培研修感言
2014/03/09 职场文书
房屋继承公证书
2014/04/10 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
入党团支部推荐意见
2015/06/02 职场文书
特种设备安全管理制度
2015/08/06 职场文书
母亲节主题班会
2015/08/14 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js
python前后端自定义分页器
2022/04/13 Python