2010-09-22 32 views
0

我想減少我的一個大循環腳本的內存使用情況,所以我做了這個小測試。使用Doctrine我運行此代碼:我在這個Doctrine 1.2代碼中的內存泄漏在哪裏?

$new_user_entry = getById($new_user_entries[0]['id']); 
unset($new_user_entry); 

$new_user_entry = getById($new_user_entries[1]['id']); 
unset($new_user_entry); 

function getById($holding_id) 
{ 
    return Doctrine_Core::getTable('UserHoldingTable')->findOneById($holding_id); 
} 

但它留下約另外50 KB的每個我做getById時間和取消的內存,我不知道爲什麼,以及如何去改變它。我有一個循環遍歷數千個以及其他一些功能,這就產生了一個問題。

+0

您是否在Doctrine中啓用了緩存? http://www.doctrine-project.org/documentation/manual/1_2/en/caching:query-cache-&-result-cache – Archimedix 2010-09-22 18:38:22

+0

如果它默認處於活動狀態,那麼是。但我還沒有把自己打開。 – gokujou 2010-09-22 19:10:28

+0

嗯,我的意思是,如果啓用了緩存,這將解釋你的內存泄漏 - Doctrine仍然會緩存對象,因爲你只能釋放你對它們的引用,而不是原文的引用。 – Archimedix 2010-09-22 20:44:41

回答

0

我無法找到更好的解決方案,所以我放棄了Doctrine的這個功能,並用mysqli做了一個手動查詢。這方面提出了問題,一切工作雖然不理想。