有沒有辦法「清理」您創建的對象和其他變量?或者它們是自動處理的還是我有這個整體概念錯誤?做這件事的正確方法是什麼?我儘量避免使用GC。Android正確清理/處置
回答
使用不帶內存管理的GC語言進行清理的唯一方法是GC。您可以強制使用GC,但不建議使用GC(GC非常好),以便將GC更清潔的主動設置對象設置爲空。
增加:
而且儘量使對象作爲當地的地,這樣他們GCed,因爲他們範圍之。
只要不保留對對象(變量)的引用,大多數情況下它們都會被清除。有些東西就像cursor
和bitmap
雖然需要關閉才能刪除,以防止內存泄漏。
只要您的對象創建不在頂層,我認爲您不必擔心GC。注意:GC是java的一部分。你無法避免它。
附錄1:如果你真的擔心它,你可以重新使用變量。這樣可以將對象創建保持在最低限度,但這樣做會使該變量丟失,並且無法存儲大量數據。
調用System.gc()
將強制垃圾收集發生。
有一個系統計算您創建的對象的引用。如果你循環了很多並且創建了很多對象,你將會在這些對象堆積的地方創建一段時間。系統會在您的處理器沒有做任何事情時收集垃圾,或者在收集之前等待您需要更多空閒內存。如果您已經處理了一段時間,由於處理過程中發生垃圾收集,您的性能會出現問題。
請查看此頁面,搜索「垃圾收集」
http://developer.android.com/guide/practices/design/performance.html
注:具有應用程序上下文創建會活到應用程序執行的最後什麼。使用活動上下文創建的任何內容都將一直存在,直到活動結束。這兩種情況會導致內存泄漏!
有關具體到Android一個更完整的答案:
請務必閱讀application lifecycle爲Android。它將幫助您避免Android中的活動泄漏。
Android的活動有onDestroy()方法。您可以使用此方法關閉打開的連接或對話框或關閉一些掛起的任務。
您還可以閱讀Java GC以更好地理解它。我會推薦SCJP書籍,垃圾收集章節。它很好地解釋了一個對象何時有資格進行垃圾回收。
- 1. 正確處理靜態HTREEITEM清理
- 2. Android WebView:Tel:Geo:Mailto:正確處理
- 3. 正確清理System.ServiceModel.ServiceHost
- 4. Android:在OpenGL後正確清理
- 5. 正確清理java arraylist
- 6. 正確的清理代碼
- 7. Android:處理活動的正確方法
- 8. Android:正確處理多個通知
- 9. 正確的多任務處理android
- 10. Wicket - 在異常處理後正確清理頁面組件
- 11. 正確設置Java異常處理
- 12. 正確處理庫
- 13. 正確處理StaleObjectStateException
- 14. 正確處理DbConnection
- 15. 處理SSL_shutdown正確
- 16. 正確處理DomainOperationException
- 17. 正確處理didReceiveMemoryWarning
- 18. 正確處理WebExceptions?
- 19. 如何正確配置IntelliJ IDEA以處理Android批註?
- 20. 如何正確處理?
- 21. 如何正確處理System.Web.HttpRequestValidationException
- 22. IdentityServer4處理註銷正確
- 23. QTextBrowser未正確處理CSS
- 24. 正確處理AVAssetResourceLoaderDelegate網址
- 25. 如何正確處理httpStatuscode
- 26. 處理JSOM clientcontext正確
- 27. 如何正確處理
- 28. 正確的線程處理
- 29. 如何正確處理EntityExistsException?
- 30. 正確的異常處理
我相信OP在談論物體的活動。作爲一般規則,你不應該調用你的活動onDestroy()方法。讓操作系統處理它。 – AedonEtLIRA