如何计算一个数组的内存?

cllover 2012-08-13 04:32:32
我有一个多维数组,$arr,这个数组时逐渐通过各种复杂的运算生成的
如何计算这个$arr所占的内存?
现在想到的方法是通过将数组写入文件来计算其内存
memory_get_usage()好像不行.
...全文
199 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2012-08-14
  • 打赏
  • 举报
回复
memory_get_usage 和 xdebug_memory_usage 测试的结果是一样的
1、使用 xdebug_memory_usage
$memo = xdebug_memory_usage();
$memo = xdebug_memory_usage();//赋值两次是为了消除 $memo 自身的影响
$a = array();
echo xdebug_memory_usage() - $memo, PHP_EOL;
$a[] = 1;
echo xdebug_memory_usage() - $memo, PHP_EOL;
$a[] = 1;
echo xdebug_memory_usage() - $memo, PHP_EOL;
168 //空数组
248 //有一个数值成员
328 //有两个数值成员

2、使用 memory_get_usage
$memo = memory_get_usage();
$memo = memory_get_usage();
$a = array();
echo memory_get_usage() - $memo, PHP_EOL;
$a[] = 1;
echo memory_get_usage() - $memo, PHP_EOL;
$a[] = 1;
echo memory_get_usage() - $memo, PHP_EOL;

你将得到相同的结果

一个数值类型的变量需要占用 80 字节的内存
其他类型的还要多
helloyou0 2012-08-13
  • 打赏
  • 举报
回复
应该是只能够大致估计

可以看看这里的讨论,该答案也不是精确的,看注释
http://stackoverflow.com/questions/2192657/how-to-determine-the-memory-footprint-size-of-a-variable
黄袍披身 2012-08-13
  • 打赏
  • 举报
回复
为了调试吗?xdebug
cainiaophper 2012-08-13
  • 打赏
  • 举报
回复

$a=memory_get_usage(), '<br />';
unset($arr);
echo $a-memory_get_usage();

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧