我知道PHP使用的copy-on-write和引用計數,但我不知道垃圾收集器何時自然觸發。PHP何時觸發垃圾回收器?
我的意思是,在一個變量的引用計數爲0之後,GC在方法/函數結束後是否會清除它?循環結束後是否清潔?
那麼,希望這個問題已經夠清楚了。
我知道PHP使用的copy-on-write和引用計數,但我不知道垃圾收集器何時自然觸發。PHP何時觸發垃圾回收器?
我的意思是,在一個變量的引用計數爲0之後,GC在方法/函數結束後是否會清除它?循環結束後是否清潔?
那麼,希望這個問題已經夠清楚了。
你可以「配置」當垃圾收集器運行是通過配置值(來自RaggaMuffin-420的評論:這些僅影響舊會話的清理)。session.gc-maxlifetime
,session.gc-probability
,和session.gc-divisor
。
你可以調用gc_collect_cycles()
在任何特定的實例中強制垃圾回收,但通常被視爲代碼異味(你開發的代碼通常不應該依賴於垃圾回收器是否已經運行)。
session.gc- *設置用於PHP清理tmp會話文件時,非常確定它們與變量內存分配無關。 –
謝謝,我沒有意識到這一點,更新了我的答案。 –
http://www.php.net/manual/en/features.gc.php –
好問題。我跑了一個測試,回到那裏,我用任意數據填充了一個變量,然後失去了參考。我在循環中做了幾百萬次,但仍然耗盡內存...... – Flosculus