【发布时间】:2012-08-02 02:08:56
【问题描述】:
可能重复:
What's better at freeing memory with PHP: unset() or $var = null
就垃圾回收而言,在任何情况下 1 是否都比另一个好?
编辑:
特别是如果 $var 是一个非常大的变量,具有很多级别的递归和其他对象(与递归清理大对象有关)
编辑:
删除了这个:
我只能想到一件事,那就是isset($var) 在任何一种情况下都会做出不同的反应。
因为显然我弄错了......他们的反应相同。
【问题讨论】:
-
与弱引用有关。变量本身实际上永远不会“超出范围”,它只需要在它变为无效时进行清理。
-
这是一个很棒的补充...高性能应用非常需要。
-
否,但它提供了类似缓存的功能。基本上,您加载了很多(数百万)对象,并使用弱引用保持缓存最重要的内容......这样,如果变量在某个范围内,它将引用保存在缓存中。如果没有,则可以免费收集。当包含的 var 超出范围时,我需要删除引用对象。
-
虽然只有 1 个线程,但您可以拥有非常复杂的对象层次结构。如果您加载图像数据并将其存储在某个类中,那么您真的只想缓存它,只要它已经在内存中(其他任何东西都是浪费)。弱引用对于超大规模应用程序中的超大数据非常重要。
标签: php