2013-07-30 98 views
-1

我有大量正在使用CLI處理的數據。爲什麼在foreach循環中內存消耗越來越大?

在scipt中,數據經歷一個foreach循環。

但是在每次迭代中,內存消耗越來越大。

這是怎麼發生的?每個var都會在循環中被重新分配,所以不會有內存泄漏。雖然我試圖在每次迭代結束時設置一個var null,但它並沒有幫助。

在循環中,我使用對象(ActiveRecord)並使用數據庫。

在開始時,腳本的運行速度非常快(每秒大約10次迭代),最終它的性能低於每秒1次迭代。

謝謝。

+3

如果我們看不到代碼,我們不能期望告訴你爲什麼你的代碼會增加內存使用量。 – Jim

+0

我們是mindreaders,我們應該能夠看到這一點,而不看到一行代碼? – Barmar

+0

其中一種可能性是PHP中或循環中的BUG。你可以發佈一些代碼來檢查它的問題 –

回答

1

我想你的答案可以發現here在文件中 - 垃圾回收器不時在每次迭代中被觸發。

+0

謝謝你的回答,但即使在第1000次迭代之後,內存消耗也只會越來越大。 – serg66

+0

它可能是PHP中的一個bug,請閱讀有關垃圾收集的文檔。我記得在舊版本的PHP中有一個問題,我不知道它是否已經修復。 – lupatus