2011-11-08 28 views
2


你好社區, 我試圖調試,我沒有做。這個應用程序在線工作,緩存文件系統上的所有內容,保存所有內存路徑(很多路徑)(我看到錯誤的方法,但我必須努力)。這個應用程序有一個選項,可以下載所有的內容,並用相對路徑填充內存。
問題是,當我檢查這個選項時,應用程序開始下載和緩存,但在它完成之前崩潰。在模擬器上一切工作正常。
崩潰報告日誌談論內存警告和由jetsam殺死的應用程序。 使用儀器分配跟蹤應用程序我發現活動字節「恰好」在7Mb左右,這也有助於在下載過程中使用刷新機制,在下載完成後釋放舊的路徑。
根本沒有明顯的泄漏。
我開始使用VMTracker,我發現駐留內存和髒內存都非常高,峯值在61Mb和21Mb左右。有一些我沒有得到。
我已經讀了很多關於它的
What do "Dirty" and "Resident" mean in relation to Virtual Memory?
How can I get rid of resident dirty memory in Objective-C?
但自從我放開了最建立在其他髒內存來自路徑的問題嗎?我該如何清潔它?
謝謝,
安德烈帶有VM跟蹤器的iOS分析。髒和常駐記憶引起記憶警告,我該怎麼辦?

回答

6

好了,找到了一個解決方案,我guess..doing各種測試,我發現,可能是連接東西緩存。所以我設置了NSURLCache 0byte。現在我的應用程序似乎只能運行一個很髒的內存,差不多有一半。一個很大的改進。這是驚人的兩行代碼。

[[NSURLCache sharedURLCache] setMemoryCapacity:0]; 
[[NSURLCache sharedURLCache] setDiskCapacity:0]; 

正如我所說的蘋果一些TECK會談髒內存也可以代表一個數據緩存,我還沒有嘗試設置緩存策略中的URL請求,但可能效果會是一樣的。

希望能幫到別人。