- 论坛徽章:
- 0
|
最近参加一个交流会
有人讨论到PHP中使用的内存的释放是这么讲的
"使用的变量 不使用时要哟你unset来释放掉来节约内存"
此时有人立即反驳:"unset并不释放内存"
此后无人讨论这个话题
最开始我个人的观点是unset不释放内存 理由很简单 我的测试结果都证明 一个耗费1G内存的脚本 无论如何释放,在top中哦你看到的还是占用1G 难道unset无用?
看这样一个脚步
-
- 1 <?php
- 2 echo memory_get_usage()."\n";
- 3
- 4 $a[]='a';
- 5 unset($a);
- 6 echo memory_get_usage()."\n";
- 7
- 8 $x[]='n';
- 9 unset($x);
- 10 echo memory_get_usage()."\n";
- 11
- 12 $c[]='a';
- 13 unset($c);
- 14 echo memory_get_usage()."\n";
- 15 ?>
复制代码
结果是这样的
50764 --->Start
51152 --->定义$a并释放
51152 --->定义$x并释放
51152 --->定义$c并释放
PHP是解释执行的过程
定义$a一定导致一次内存分配
定义$x也导致内存分配
但内存使用量没有增加 为什么 因为$a被释放了 $x使用的内存和$a一样 正好使用了$a释放的内存
是不是得出以下结论 :
1 unset释放内存了 释放的内存 还被整个脚本占用 以备复用
2 PHP仅在结束时候将全部内存释放掉 你不是放文件描述 数据库链接 也都会在此刻释放 不会导致资源泄漏
以前我们在C程序里面分配的内存 一定要自己释放否则就会泄漏 PHP中不需要了
[ 本帖最后由 eye_onme 于 2008-1-17 10:09 编辑 ] |
|