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 相关文章推荐
PHP如何透过ODBC来存取数据库
Oct 09 PHP
php面向对象全攻略 (四)构造方法与析构方法
Sep 30 PHP
php的ajax框架xajax入门与试用介绍
Dec 19 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
Jan 11 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
深入PHP curl参数的详解
Jun 17 PHP
php简单日历函数
Oct 28 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
Mar 15 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
Mar 30 PHP
PHP环形链表实现方法示例
Sep 15 PHP
thinkphp中U方法按路由规则生成url的方法
Mar 12 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 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
html中select语句读取mysql表中内容
2006/10/09 PHP
PHP 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
原生js实现自定义消息提示框
2020/11/19 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
python中readline判断文件读取结束的方法
2014/11/08 Python
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
Python发展简史 Python来历
2019/05/14 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
python线程里哪种模块比较适合
2020/08/02 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
Europcar美国/加拿大:预订汽车或卡车租赁服务
2018/11/13 全球购物
护理个人求职信范文
2014/01/08 职场文书
高中数学教学反思
2014/01/30 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
法院个人总结
2015/03/03 职场文书
商务司机岗位职责
2015/04/10 职场文书
教师听课学习心得体会
2016/01/15 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
Python实现随机生成迷宫并自动寻路
2021/06/13 Python
Mysql忘记密码解决方法
2022/02/12 MySQL