本頁面提供專為以 View 為基礎的版面配置設計的資訊,說明如何找出及觸發記憶體流失。如要瞭解如何擷取及分析記憶體快照資料,請參閱「擷取記憶體快照資料」。
找出記憶體流失問題
如要快速篩選出可能與記憶體流失相關聯的類別,請開啟類別下拉式選單,然後選取「顯示活動/片段流失」。Android Studio 會顯示可能代表應用程式中的 Activity 和 Fragment 執行個體導致記憶體流失的類別。這項篩選條件會顯示的資料類型包括:
- 已遭刪除但仍受參照的
Activity執行個體。 - 不含有效
FragmentManager但仍受參照的Fragment執行個體。
請注意,在下列情況下,這項篩選條件可能會產生誤判結果:
Fragment已建立但尚未使用。Fragment已快取,但不屬於FragmentTransaction。
如要更手動地尋找記憶體流失,請瀏覽類別和執行個體清單,找出「保留大小」較大的物件。請注意下列任一原因所導致的記憶體流失情形:
- 長時間參照
Activity、Context、View、Drawable,以及可能會保留Activity或Context容器參照的物件。 - 可保留
Activity執行個體的非靜態內部類別 (例如Runnable)。 - 保留物件超過必要時間的快取。
發現潛在的記憶體洩漏問題時,請使用「Instance Details」(執行個體詳細資料) 中的「Fields」(欄位) 和「References」(參照) 分頁標籤,跳至感興趣的執行個體或原始碼行。
觸發記憶體流失以進行測試
如要在應用程式中引發記憶體流失以進行測試,可以透過下列任一方式觸發流失:
- 在不同的活動狀態下,將裝置從直向轉為橫向再轉回直向,依此多次反覆執行。旋轉裝置經常會導致應用程式的
Activity、Context或View物件流失,這是因為系統會重新建立Activity,而且如果應用程式在其他位置保留其中任一物件的參照,系統將無法執行垃圾收集。 - 在不同的活動狀態下,在您的應用程式與其他應用程式之間切換。舉例來說,你可以前往主畫面,然後返回應用程式。