调用unset()是否会释放与该对象关联的内存?有几种情况下,我发现自己在处理大型关联数组,并且我想在处理完后删除它们(释放内存以创建新的关联数组)。
发布于 2010-07-28 22:15:09
调用unset()是否会释放与该对象关联的内存?
是这样的。
使用memory_get_usage()自己检查
echo memory_get_usage() . "<br />";
unset($array['key']);
unset($array['key2']);
unset($array['key3']);
echo memory_get_usage();更多资源:
从后面的链接引用:
PHP在三个主要时刻执行垃圾收集:
当您离开function
当您使用unset()、、mysql_free_result()或其他显式清除变量之后的资源销毁函数时,就会发生情况1。情况2隐含地清除了资源--任何离开作用域的变量,即不再适用的变量,都会被清除。最后,情景3隐式地释放了所有与脚本相关的资源。
发布于 2010-07-28 22:16:40
unset()在php中确实“释放”内存,但它让垃圾收集器决定何时实际释放内存。因此,可以根据需要或方便的情况(在PHP耗尽可用内存之前)释放内存。
一个主要的警告是要注意,您不是试图在局部范围内unset()全局变量。当在函数的区域设置中执行此操作时,即使是通过引用传递的变量也只会有它们的本地引用unset。要真正使内存可用,任何unset()都应该在该变量的适当作用域内执行。
发布于 2010-07-28 22:11:30
它不会立即释放内存,但它允许垃圾收集器这样做。
https://stackoverflow.com/questions/3353701
复制相似问题