我有一个多维数组,$arr,这个数组时逐渐通过各种复杂的运算生成的
如何计算这个$arr所占的内存?
现在想到的方法是通过将数组写入文件来计算其内存
memory_get_usage()好像不行.

解决方案 »

  1.   


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

  2.   

    应该是只能够大致估计可以看看这里的讨论,该答案也不是精确的,看注释
    http://stackoverflow.com/questions/2192657/how-to-determine-the-memory-footprint-size-of-a-variable
      

  3.   

    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 字节的内存
    其他类型的还要多