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 相关文章推荐
2个Codeigniter文件批量上传控制器写法例子
Jul 25 PHP
3款值得推荐的微信开发开源框架
Oct 28 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
php筛选不存在的图片资源
Apr 28 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
php 实现Hash表功能实例详解
Nov 29 PHP
PHP实现接收二进制流转换成图片的方法
Jan 10 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 PHP
如何判断微信付款码和支付宝付款码
Apr 01 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创建动态图像
2006/10/09 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
jquery的颜色选择插件实例代码
2008/10/02 Javascript
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
js静态方法与实例方法分析
2011/07/04 Javascript
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
js 走马灯简单实例
2013/11/21 Javascript
获取阴历(农历)和当前日期的js代码
2016/02/15 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
python处理文本文件并生成指定格式的文件
2014/07/31 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
如何在python中执行另一个py文件
2020/04/30 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
详解pandas映射与数据转换
2021/01/22 Python
信息管理与信息系统专业求职信
2014/06/21 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
护士2015年终工作总结
2015/04/29 职场文书
2015年统战工作总结
2015/05/19 职场文书
教师见习总结范文
2015/06/23 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL
Elasticsearch 数据类型及管理
2022/04/19 Python