我試圖釋放UIWebView對象,但它不能釋放內存。 它有什麼理由?是否可以釋放UIWebView的內存?
回答
也許清除緩存可能有幫助嗎?見類NSURLCache
。
僅僅因爲你發佈了它並不意味着它可以被釋放 - 也許它被其他東西所使用?
在你釋放它之後,它的保留數是多少?
[myWebView release];
NSLog(@"%i", [myWebView retainCount]);
如果這個數字不爲0,其他人被保留它,以及它不能被釋放,直到他們釋放它太(或者它設置爲自動釋放,因此將在未來的某個時候消失)。
另一種可能性是,所使用的內存是在創建Web視圖時加載的某種共享庫 - 您可能無法控制如何卸載該內存。
山姆
PS我假設你也做[myWebView removeFromSuperview];
- 添加自己的視圖將保留你。
感謝您的建議deanWombourne – RAGOpoR 2010-02-02 17:09:33
@ Retina的「Retaincount is useless」http://www.friday.com/bbum/2011/12/18/retaincount-is-useless/ – 2012-01-06 19:28:48
@bbum同意 - 我只是希望當我回答這個問題時,我已經足夠了解這個問題,在頂部加上一個大膽的聲明! – deanWombourne 2012-01-07 20:43:46
有一些技巧(檢查original post爲其他人),可能有助於發佈一個UIWebView時儘可能多的內存。不幸的是,他們從來沒有達到完全釋放的內存。通常對我來說更好的方法是在發佈之前清空WebView的HTML文檔。
// Empty the HTML document. This hack free some additional memory
[webview stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML='';"];
但我從來沒有達到由web組件:(使用的內存完全釋放
另外,如果您想清除Urlcache文件太大,可以嘗試使用該調用將其清除:
// remove all cached responses
[[NSURLCache sharedURLCache] removeAllCachedResponses];
這將清除所有的URLRequest(包括UIWebView的內部完成的那些)所使用的應用程序的sharedURLCache。
- 1. 是否可以釋放現有內存?
- 2. 對象是否可以釋放其內存?
- 3. 是否可以使用JVM字節碼顯式釋放內存?
- 4. 在開始活動之前是否可以釋放內存?
- 5. 從內存中釋放UIWebView內容,強制應用程序釋放內存
- 6. malloc/free。可以從釋放的內存
- 7. 是否可以使用NSUserDefault保存UIWebView?
- 8. 「malloc」ed內存是否隱式釋放?
- 9. python2是否不願釋放內存?
- 10. 我是否正確釋放內存?
- 11. ArrayList.clear()方法是否釋放內存?
- 12. BroadcastReceiver是否可以從Android操作系統中殺死以釋放內存?
- 13. [自動釋放]是否可以接受?
- 14. 根據是否有空閒空間,我可以釋放內存嗎?
- 15. 是否可以爲Java對象堆外分配和釋放內存空間?
- 16. GC運行後是否可以使用Sun JVM將內存釋放到系統?
- 17. 釋放內存
- 18. 釋放內存
- 19. 從UIWebView一旦關閉釋放內存/ cookie /緩存
- 20. 是否可以更改UIWebView中的keybroadType
- 21. 釋放鎖定的內存是否解鎖相應的頁面?
- 22. ç釋放內存
- 23. 釋放ScrollView內存
- 24. QList內存釋放
- 25. JNI釋放內存
- 26. OpenCV釋放內存?
- 27. 與釋放內存
- 28. Javascript內存釋放
- 29. QWebView內存釋放
- 30. UINavigationViewController內存釋放
感謝您的建議Diederik – RAGOpoR 2010-02-02 17:09:10
cound你笑我舉一些例子來清除緩存? – RAGOpoR 2010-02-02 17:33:54
[[NSURLCache sharedURLCache] removeAllCachedResponses]; – diederikh 2010-02-02 19:03:41