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(1)
Oct 09 PHP
php仿QQ验证码的实例分析
Jul 01 PHP
php函数间的参数传递(值传递/引用传递)
Sep 23 PHP
php生成图形(Libchart)实例
Nov 06 PHP
PHP类继承 extends使用介绍
Jan 14 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
Nov 03 PHP
php获取文件后缀的9种方法
Mar 22 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
Mar 23 PHP
thinkphp3.x中变量的获取和过滤方法详解
May 20 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
Sep 22 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
Apr 03 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 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&amp;&amp;mysql)二
2006/10/09 PHP
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
2016/03/31 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
Javascript 刷新全集常用代码
2009/11/22 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
浅谈javascript中new操作符的原理
2016/06/07 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
Vue.js学习示例分享
2017/02/05 Javascript
babel基本使用详解
2017/02/17 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python的Flask框架中实现简单的登录功能的教程
2015/04/20 Python
Python生成随机验证码的两种方法
2015/12/22 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
Python语言描述最大连续子序列和
2017/12/05 Python
python实现ID3决策树算法
2018/08/29 Python
PyQt5响应回车事件的方法
2019/06/25 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
python单例设计模式实现解析
2020/01/07 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
安全检查管理制度
2014/02/02 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
配置nginx 重定向到系统维护页面
2021/06/08 Servers
前端使用svg图片改色实现示例
2022/07/23 HTML / CSS