<?php
var_dump( memory_get_usage() );  // int(129100)
var_dump( memory_get_usage() );  // int(129156)  - 很难理解,这里为什么会有内存增加?
var_dump( memory_get_usage() );  // int(129156)
define('hello', 'WORLD');
var_dump( memory_get_usage() );  // int(129156)   - 既然创建了一个常量,就该有内存增加。
$hello = 'WORLD';
var_dump( memory_get_usage() );  // int(129304)

解决方案 »

  1.   

    看这个吧:
    http://www.laruence.com/2011/03/04/1894.htmlphp和C那样的底层语言是不一样的,它本身更象一个小系统
      

  2.   

    int 335160
    int 335160
    int 335160
    int 335176
    int 335280
      

  3.   

    int(111976) int(111976) int(111976) int(112008) int(112008) 
      

  4.   

    int 368248int 368248int 368248int 368264int 368368
      

  5.   

    http://www.laruence.com/2011/03/04/1894.html
     确实是高人呐
      

  6.   

    我的执行结果是
    int(51312)
    int(51424)
    int(51424)
    int(51480)
    int(51480)我觉得讨论单条语句所花的内存没有意义。内存的分配实际上都是分段的,也就是即使你需要1个字节的内存,实际分配有可能是32个字节或者1024个字节,取决于分配策略,因为这样就不需要每次使用每次分配,一个变量所花的内存一般按照一个字母一个字节近似计算一下即可,很难精确计算。另外var_dump这个函数本身会输出字符串,这个字符串是不是也需要内存,这取决于内部实现。为什么有的时候运行会增加内存有的时候内存不变,那就是因为前次分配多出来的内存是否够用的问题,如果够用就不需要增加,如果不够用就要增加。
      

  7.   

    var_dump()输出的数据也是需要占用内存的!
      

  8.   

    int(314760) 
    int(314848) 
    int(314848) 
    int(314864) 
    int(314968) 
    我也测了一下,
    $a=11;
    var_dump($a);
    var_dump( memory_get_usage() );//int(314104)
    var_dump( memory_get_usage() );//int(314104)
    var_dump( memory_get_usage() );//int(314104)
    注释掉$a输出,可知第一处内存变化是var_dump造成的,而不是memory_get_usage()关于define我定义值为字符串,内存不变,定义为串结果就变
    估计int型是共享内存,放在了常量区,但是字符串需要创建,见下面
    define("hello",123123);//不变
    define("hello","AAAAAAA");//不变

    define("hello","AAAAAAA");//变
    define("hello","AAAAAAABBB");//不变,像是存常量区一个指针(&地址)可能也存在不同机器不同版本不同的结果,以上看到了三四种结果了