我正在測試泄漏的特定用例。有時,我會得到泄漏,而其他時間我也不會經歷相同的用例。你能否建議是因爲系統框架還是我的代碼?間歇性內存泄漏
我已經檢查了我的代碼和everthing看起來完美沒有任何未發佈的對象。你能提出一個解決方案嗎?
謝謝
我正在測試泄漏的特定用例。有時,我會得到泄漏,而其他時間我也不會經歷相同的用例。你能否建議是因爲系統框架還是我的代碼?間歇性內存泄漏
我已經檢查了我的代碼和everthing看起來完美沒有任何未發佈的對象。你能提出一個解決方案嗎?
謝謝
這是非常不可能的框架。不要忘記,有數百(數千)的開發人員在使用它,所以有人沒有發現錯誤的機會比僅由您自己進行審查的代碼更爲輕巧。
間歇性內存泄漏的最可能來源是自動回覆對象。自動釋放的對象一直存在,直到它們所屬的自動釋放池被耗盡。根據內存條件,他們可能看起來像是在一次運行中泄漏,但他們不會在下一次運行。
請參閱Avoiding, finding and removing memory leaks in Cocoa瞭解如何跟蹤內存泄漏。
Edit01:
你可能逃脫它,但我不會推薦它。如果Apple在測試時發生泄漏,您很有可能被拒絕。
作爲一個質量問題,它取決於泄漏的程度有多嚴重,以及在實際使用中他們可以持續多久。每個應用程序可能會在這裏和那裏泄漏幾個字節。 (例如,在某些框架中有已知的泄漏。)如果泄漏非常小,它們不會造成問題,特別是在僅運行很短時間的應用程序中。但是,如果泄漏較大或應用程序設計運行很長時間,則泄漏最終會導致應用程序失效。
例如,假設您有類似天氣應用的程序。作爲一個質量問題,由於天氣應用程序的使用很快,它是否會泄漏一點也不重要。人們打開它,看看天氣,然後關閉它。泄漏沒有時間積累。另一方面,如果您的應用程序像網絡瀏覽器或電子閱讀器等人們長時間處於開放狀態,那麼泄漏可能會累積並導致應用程序失效。簡而言之,像所有其他編程任務一樣,追蹤泄漏是感知質量與開發之間的折中。花費更多的資源來追蹤一個微不足道的常見錯誤比追蹤一個嚴重但非常罕見的錯誤更爲常見。
我會重申在上面的泄漏內存泄漏檢測方法將最終找到泄漏。如果你花時間在上面,你會最終找到它。
沒有你的代碼,我們不能建議任何東西。 – spender 2010-02-03 09:20:25