php查看一个变量的占用内存的实例代码


Posted in PHP onMarch 29, 2020

事例:

php版本为7.2

<?php
echo memory_get_usage() , '<br>';
$start = memory_get_usage();
$a = Array();
for ($i=0; $i<1000; $i++) {
$a[$i] = $i + $i;
}
$mid = memory_get_usage();
echo memory_get_usage() , '<br>';
for ($i=1000; $i<2000; $i++) {
$a[$i] = $i + $i;
}
$end = memory_get_usage();
echo memory_get_usage() , '<br>';
echo 'argv:', ($mid - $start)/1000 ,'bytes' , '<br>';
echo 'argv:',($end - $mid)/1000 ,'bytes' , '<br>';
echo 'Memory:', ($mid - $start)/1024 ,'k' , '<br>';
echo 'Memory:',($end - $mid)/1024 ,'k' , '<br>';
输出是:
389336
418056
442632
argv:28.72bytes
argv:24.576bytes
Memory:28.046875k
Memory:24k

返回当前分配给你的 PHP 脚本的内存量,单位是字节(byte)。

大概了解1000个元素的整数数组需要占用 28k 内存,平均每个元素占用 28 个字节

memory_get_usage() 返回的结果并不是全是被数组占用了,还要包括一些 PHP

运行本身分配的一些结构,可能用内置函数生成的数组更接近真实的空间:

<?php
$start = memory_get_usage();
$a = array_fill(0, 10000, 1);
$mid = memory_get_usage(); //10k elements array;
echo 'argv:', ($mid - $start )/10000,'byte' , '<br>';
echo 'Memory:', ($mid - $start)/1024 ,'k' , '<br>';
$b = array_fill(0, 10000, 1);
$end = memory_get_usage(); //10k elements array;
echo 'argv:', ($end - $mid)/10000 ,'byte' , '<br>';
echo 'Memory:',($end - $mid)/1024 ,'k' , '<br>';
得到:
argv:54.5792byte
argv:54.5784byte

argv:39.736byte
Memory:388.046875k
argv:39.736byte
Memory:388.046875k

大概了解10000个元素的整数数组需要占用 388k 内存 ,从这个结果来看似乎一个数组元素大约占用了39个字节左右。

内容补充

php获取变量所占内存大小的方法

$start_memory = memory_get_usage();
$foo = "Some variable";
echo memory_get_usage() - $start_memory;

这个可以获取所有变量类型的大小

strlen($foo) 这个可以获取当前字符串的字节大小 除以8就是位大小

到此这篇关于php查看一个变量的占用内存的实例代码的文章就介绍到这了,更多相关php怎么查看一个变量的占用内存内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
模拟xcopy的函数
Oct 09 PHP
用PHP制作静态网站的模板框架(四)
Oct 09 PHP
用PHP查询域名状态whois的类
Nov 25 PHP
实现了一个PHP5的getter/setter基类的代码
Feb 25 PHP
从MySQL数据库表中取出随机数据的代码
Sep 05 PHP
PHP 裁剪图片成固定大小代码方法
Sep 09 PHP
使用PHP破解防盗链图片的一个简单方法
Jun 07 PHP
THINKPHP2.0到3.0有哪些改进之处
Jan 04 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
Dec 24 PHP
PHP时间类完整实例(非常实用)
Dec 25 PHP
PHP单例模式实例分析【防继承,防克隆操作】
May 22 PHP
php如何获取Http请求
Apr 30 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 #PHP
PHP中类与对象功能、用法实例解读
Mar 27 #PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 #PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 #PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
Mar 26 #PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 #PHP
Centos7安装swoole扩展操作示例
Mar 26 #PHP
You might like
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
jquery中radio checked问题
2015/03/16 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
分析JS单线程异步io回调的特性
2017/12/01 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
[49:41]NB vs NAVI Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
Python中多线程的创建及基本调用方法
2016/07/08 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
python 循环数据赋值实例
2019/12/02 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
英国行业制服供应商:Alexandra
2019/09/14 全球购物
Java面试题:为什么要用Java
2012/05/11 面试题
人事档案接收函
2014/01/12 职场文书
地震捐款倡议书
2014/08/29 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
2016中秋节广告语
2016/01/28 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
如何用JavaScipt测网速
2021/05/09 Javascript
Python中的变量与常量
2021/11/11 Python