20
3

变量的内存运用情况..

Author Jessica     Category PHP     Tags , ,

对变量进行null赋值有用吗??我们今天来测试下..

  1. <?php  
  2. $a = memory_get_usage();  
  3.  
  4. $str = 'aaa';  
  5. $str = 'abc';  
  6.  
  7. $b = memory_get_usage();  
  8. echo $b-$a

这个例子在我这里输出的是176..也就是使用了176个字节..

下面我们给变量赋值null后再进行第二次赋值再看看

  1. <?php  
  2. $a = memory_get_usage();  
  3.  
  4. $str = 'aaa';  
  5. $str = null;  //注意这里..  
  6. $str = 'abc';  
  7.  
  8. $b = memory_get_usage();  
  9. echo $b-$a

得出的结果是160字节..这说明了什么??

给变量进行null赋值后..内存也被释放了..而你如果没有进行这一步骤..

aaa这个字符串还会存在在内存中的..

但是另外一个奇怪的现象..

如果我们不是字符串..也就是把上面的例子赋值为数字..

那么得到的内存是一样的..

那这又说明了什么??

我没有看过PHP的源码..不敢妄自下结论..

但是我更觉得PHP的内存就像Java..有一块内存是静态的..用来存放字符串等类型的..

但这只是一种猜测..

总之..以后赋值字符串前.试着先进行null赋值..可以节省内存:)

3 Comments to “ 变量的内存运用情况.. ”

  • 剑由心生 2009年04月23日 于 08:39

    应该是栈和堆这个区别。局部变量是在栈中生成。这是系统自动分配的,节省内存方面用不到。
    而堆是在堆中由程序员中申请的,这才会有C++中使用delete释放内存和JAVA中GC机制了。
    PS:刚学习PHP,无意进入你的页面。被你好学精神感动。有意加Q:198710200

  • 游客 2009年05月31日 于 03:20

    unset()

  • 游客 2009年06月29日 于 16:57

    我这里两种情况下是一样的

Post comment

分类目录

最近文章

近期评论

文章归档

标签

.net AJAX button Comet CSS Discuz! DIV+CSS Flash Form Google HTML编辑器 IE8 Java JavaScript jQuery JSP md5 MySQLReback OAuth Oracle PHP php-fpm PNG Punny SkiyoTabs tab TagCloud Vista Web2.0 Windows7 上传 加密 图标 本站原创 模板 模板引擎 源码 登录 短网址 石家庄 算法 编译 面向对象 魔术方法

链接表