本篇将详解php获取内存使用情况。

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更容易阅读:functionmemory_usage(){

$memory=(!function_exists('memory_get_usage'))'0':round(memory_get_usage()/1024/1024,2).'MB';

return$memory;

}

常用的调试检测PHP代码性能的方法有:

memory_get_usage可以分析内存占用空间。

用microtime函数就可以分析程序执行时间。

本篇详解了php获取内存使用情况,更多相关内容请关注php中文网。

相关推荐:

php获取总共内存_PHP获取内存使用情况详解相关推荐

  1. xpath 取标签下所有文字内容_对Xpath 获取子标签下所有文本的方法详解

    对Xpath 获取子标签下所有文本的方法详解 在爬虫中遇见这种怎么办 想提取名称, 但是 名称不在一个标签里 使用xpath string()方法 例如 data.xpath("string ...

  2. python内存的回收机制_python的内存管理和垃圾回收机制详解

    简单来说python的内存管理机制有三种 1)引用计数 2)垃圾回收 3)内存池 接下来我们来详细讲解这三种管理机制 1,引用计数: 引用计数是一种非常高效的内存管理手段,当一个pyhton对象被引用 ...

  3. 如何获取请求端真实IP和远程主机IP详解

    如何获取请求端真实IP和远程主机IP详解 需求背景 一.Remote_Addr 情况 一: 情况二: java中获取Remote_Addr的api 二.X-Forwarded-For java中获取X ...

  4. php 自动获取头像,PHP_WordPress中用于获取及自定义头像图片的PHP脚本详解,get_avatar()(获取头像) get_avat - phpStudy...

    WordPress中用于获取及自定义头像图片的PHP脚本详解 get_avatar()(获取头像)get_avatar() 函数用来获取置顶邮箱或者用户的头像代码,在评论列表中非常常用. 这个函数提供 ...

  5. java 获取用户的MAC地址多种方法实例详解

    java 获取用户的MAC地址多种方法实例详解 这篇文章主要介绍了JAVA实现获取用户的MAC地址的多种方法实例,需要的朋友可以参考下 java实现获取用户的MAC地址方法: 方法一:将本机地址与局域 ...

  6. linux内存管理机制以及free命令详解

    linux内存管理机制以及free命令详解 一.linux内存管理机制 1.物理内存和虚拟内存 直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存 ...

  7. FreeRTOS 之五 动态内存管理(heap_1.c)详解

    写在前面   写这篇文章时,网上已经有了铺天盖地的文章来介绍 FreeRTOS 的动态内存.之所以还去写这篇博文,主要还是记录自己的学习过程.结合源代码一步一步分析一下FreeRTOS究竟是怎么实现的 ...

  8. 03弱引用内存泄露和hash冲突-ThreadLocal详解-并发编程(Java)

    文章目录 1 问题 2 内存泄露 3 弱引用 4 问题分析 4.1 key为强引用 4.2 key为弱引用 4.3 内存泄漏的真正原因 4.4 为什么Entry 的key使用弱引用 5 hash冲突的 ...

  9. Java JVM内存模型(运行时数据区域)详解

    详细介绍了JVM运行时数据区域,包括方法区.堆空间.栈空间.本地方法栈.程序计数器.常量池.直接内存.字面量.符号引用.直接引用. Java程序在运行时,需要在内存中的分配空间.为了提高运算效率,ja ...

最新文章

  1. 存储方式与介质对性能的影响
  2. linux内核链表分析
  3. 指针的引用做函数的参数
  4. 2021牛客多校6 - Hopping Rabbit(矩形取模+扫描线)
  5. c# java 哪个好 流媒体_C#Net7mma H264 / PCMU流媒体
  6. Java8 Stream流式编程,极大解放你的生产力!
  7. windows ftp服务器_ftp是什么意思,在windows系统安装ftp只需3步
  8. 哪种不是python元组的定义方式_最新python 笔试题
  9. 数据大放送之各省30米DEM数据
  10. java混淆书籍介绍,第二代Java混淆器Allatori功能介绍教程资源
  11. iPhone5s的App Store不能下载应用的解决方案
  12. 闲聊可穿戴设备 - shawn.xie
  13. pythonunicode编码_python unicode 编码整理
  14. html中clear标签意义,html中的clear是什么意思
  15. C语言输出转置矩阵解题步骤,C语言实现矩阵转置
  16. 中国石油大学《催化原理》第三阶段在线作业
  17. Nginx 方向代理解决跨域问题-2
  18. JavaScript——JSON
  19. mysql-router设置,mysql router 中间件 配置
  20. 计量经济学——一元线性回归模型(例题)

热门文章

  1. 华为全球最快 AI 训练集群 Atlas 900 诞生!
  2. 如何让你的 Git 历史保持“干净”?!
  3. 漫画:趣解鸿蒙 OS 如何实现跨平台?
  4. 53 年 IT 老兵详谈传统网络到互联网的演变史
  5. 三步学会 Debug 神器,效率提升不少!
  6. C 主导、C++与 C# 为辅,揭秘 Windows 10 源代码!
  7. 为什么我 11 岁的儿子说要放弃编程,却又转战 Python
  8. oracle执行策略是什么意思,郁闷的问题:oracle pl/sql 和 pro c中的执行策略
  9. java公司自己封装的框架_SpringBoot封装自己的Starter的实现方法
  10. mysql from_unixtime(_MySQL 数据库中日期与时间函数 FROM_UNIXTIME(), UNIX_TIME()