php怎样获取变量所占内存?
Admin 2021-05-07 群英技术资讯 1649 次浏览
很多PHP新手可能还不太了解要如何查看一个变量占用内存,对此下面php获取变量所占内存大小的方法,分享给大家,有需要的朋友可以参考一下。
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获取变量所占内存内容大家可以继续关注其他文章。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
swoole异步调用的方法:首先改写“ws_server.php”文件;然后建立连接的“onOpen()”;接着由客户端“ws_client.html”通过js代码连接并发送数据;最后客户端通过“console.log”打印数据到页面即可。
PHP的常量和变量不同在哪?有不少朋友对此感兴趣,下面小编给大家整理和分享了相关知识和资料,易于大家学习和理解,有需要的朋友可以借鉴参考,下面我们一起来了解一下吧。
区别:1、yaf是使用c语言开发的,效率更高,而laravel是使用PHP开发的,相比之下效率较慢;2、yaf的代码较为简洁轻便,易于调试,而laravel的代码与之相比较为复杂,对编辑器不友好,不易于调试。
区别:workerman是一个高性能的PHP socket 服务器框架;Swoole是一个面向生产环境的 PHP 异步网络通信引擎。
php5和php7的垃圾回收机制都是利用引用计数,由于PHP是用C来写的,C里面有一种东西叫做结构体,我们PHP的变量在C中就是用这种方式存储的。今天我们就来学习一下PHP5和PHP7的垃圾回收机制的不同。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008