我有一個php腳本,它使用Doctrine2和Zend來計算數據庫中的一些內容,併爲30.000個用戶發送一些電子郵件。有沒有辦法知道我在記憶中擁有哪些對象和多少個對象?
我的腳本正在泄漏內存,我想知道哪些是消耗內存的對象,以及是否有可能誰保留對它們的引用(因此不允許它們被釋放)。
即時通訊使用PHP 5.3.x,所以普通的循環引用不應該是問題。
我試過使用xdebug跟蹤功能來獲取mem_delta沒有成功(太多的數據)。
我試着在重要功能之前和之後手動添加memory_get_usage。但我得到的唯一結論是,每個用戶約有40萬個用戶,而用戶數量達到3000個,這給我提供了我可用的1Gb。
是否有其他方法可以知道內存泄漏的位置和原因? 感謝
那麼,用戶應該一個接一個的處理,應該只有400k的內存需要!如果每個週期都增加內存使用量,那麼設計中的某些內容就會嚴重錯誤! – markus
那麼,我有一個循環,調用一個函數,執行以下操作:獲取用戶的信息,計算(包括存儲),發送郵件,釋放資源。並且每個用戶都是相互獨立的,所以資源不會被釋放 –
你看過教條的實體管理者嗎?我對教義不是很熟悉,但它可能會存儲對所有30k用戶的實體/代理/ ...的引用。 – Fge