<?phpvar_dump("I am Laruence, From http://www.laruence.com"var_dump(memory_get_usage());$a = "laruence";var_dump(memory_get_usage());unset($a);var_dump(memory_get_usage());输出:
string(43) "I am Laruence, From http://www.laruence.com"int(9080 //赋值前int(90976)int(9080 //是的, 内存正常释放90808-90808 = 0, 正常了, 也就是说这32个字节是被输出函数给占用了(严格来说, 是被输出的Header占用了)
var_dump("I am Laruence, From http://www.laruence.com"var_dump(memory_get_usage());$array = array_fill(1, 100, "laruence"foreach ($array as $key => $value) { ${$value . $key} = NULL;}var_dump(memory_get_usage());foreach ($array as $key=> $value) { unset(${$value . $key});}var_dump(memory_get_usage());我们定义了100个变量, 然后又按个Unset了他们, 来看看输出:
string(43) "I am Laruence, From http://www.laruence.com"int(93560)int(11884int(104448Wow, 怎么少了这么多内存?
这是因为对于Hashtable来说, 定义它的时候, 不可能一次性分配足够多的内存块, 来保存未知个数的元素, 所以PHP会在初始化的时候, 只是分配一小部分内存块给HashTable, 当不够用的时候再RESIZE扩容,