2014-05-23 35 views
0

我知道PHP使用的copy-on-write和引用計數,但我不知道垃圾收集器何時自然觸發。PHP何時觸發垃圾回收器?

我的意思是,在一個變量的引用計數爲0之後,GC在方法/函數結束後是否會清除它?循環結束後是否清潔?

那麼,希望這個問題已經夠清楚了。

+1

http://www.php.net/manual/en/features.gc.php –

+0

好問題。我跑了一個測試,回到那裏,我用任意數據填充了一個變量,然後失去了參考。我在循環中做了幾百萬次,但仍然耗盡內存...... – Flosculus

回答

0

你可以「配置」當垃圾收集器運行是通過配置值session.gc-maxlifetimesession.gc-probability,和session.gc-divisor(來自RaggaMuffin-420的評論:這些僅影響舊會話的清理)。

你可以調用gc_collect_cycles()在任何特定的實例中強制垃圾回收,但通常被視爲代碼異味(你開發的代碼通常不應該依賴於垃圾回收器是否已經運行)。

+0

session.gc- *設置用於PHP清理tmp會話文件時,非常確定它們與變量內存分配無關。 –

+0

謝謝,我沒有意識到這一點,更新了我的答案。 –