簡體   English   中英

動態處理內存泄漏

[英]Handle memory leak dynamically

我知道在Android應用程序中有很多關於內存泄漏/處理內存泄漏的討論,但是可以動態處理。

我只是在一次采訪中提出了這個問題。 問題是

當應用程序在用戶設備上運行時,如何檢測內存泄漏並在崩潰之前保存數據(OutOfMemoryError)。

我可以猜測到一個BaseActivity,就像為所有Activity創建一個BaseActivity並將數據保存在onStop()中。

我還可以猜測要在BaseActivity中擴展Error類,但是不幸的是Java不支持Multiple Inheritance,並且Error類中沒有特定的方法可以動態檢測AFAIK的任何錯誤。

在上述情況下我可能會錯。

還有其他方法嗎?

我可能會使用與Leakcanary相同的方法。 你可以在這里閱讀。

簡而言之,它們在對象之間創建了弱引用。 GC之后,他們正在檢查參考是否被清除。 如果不是,他們正在傾銷堆,並正在分析傾銷。 分析器計算到GC根的最短強引用路徑,以確定是否存在泄漏,然后構建導致泄漏的引用鏈。 在那一刻,如果有泄漏,您可以保存所需的所有數據。

問題是,如果要保存所有數據,則需要在主線程上執行所有這些操作。 否則,應用程序可能會關閉,數據可能會丟失等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM