[發明專利]一種對移動應用的內存對象進行分析的方法和裝置有效
| 申請號: | 201710002669.8 | 申請日: | 2017-01-03 |
| 公開(公告)號: | CN106776342B | 公開(公告)日: | 2020-04-21 |
| 發明(設計)人: | 劉俊啟 | 申請(專利權)人: | 百度在線網絡技術(北京)有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京同立鈞成知識產權代理有限公司 11205 | 代理人: | 楊澤;劉芳 |
| 地址: | 100085 北京*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 移動 應用 內存 對象 進行 分析 方法 裝置 | ||
本發明提供了一種對移動應用的內存對象進行分析的方法和裝置,獲取用戶自對象容器中所確定的發生內存泄漏的對象,其中,所述對象容器中所存儲的對象與移動應用在內存中的未釋放對象實時對應;根據所述發生內存泄漏的對象所對應的標記,查找到所述發生內存泄漏的對象的引用路徑,確定所述內存泄漏的源頭。與現有技術相比,本發明幫助用戶快速定位內存泄漏的源頭,優化內存的使用,提升用戶的使用體驗。
技術領域
本發明涉及計算機技術領域,尤其涉及一種對移動應用的內存對象進行分析的技術。
背景技術
移動端設備內存空間比較有限,要求開發人員在進行移動app(應用)開發時高效規范的使用內存。特別是在Android(安卓系統)開發中,許多低端機型的內存容量較小,不規范的內存使用非常容易產生Out Of Memory(內存不足,OOM)問題,極大地損害了用戶體驗。
現有對內存對象的分析主要通過集成開發環境自帶的內存分析工具來完成,這些工具主要通過主動Dump(抓取)內存快照,并對Dump得到的內存快照文件進行解析,獲取不同類型內存對象的信息來獲取當前app內存的使用情況。所述內存分析工具中只能對底層具體對象的內存使用進行分析,無法從更高層次掌握app業務邏輯對內存的使用。例如:圖片在內存中使用byte數組進行表示,通過目前的分析工具能夠獲悉byte數組的大小,但是卻無法觀察該圖片的樣子,屬于哪個業務。
當前的內存分析工具分析內存的方式過于抽象,使得開發人員無法直觀地對當前內存對象使用進行了解,降低了調試的效率。因此在出現內存泄漏,尤其是圖片泄漏時,需要開發人員人工對內存中的對象進行查找,效率低下。
因此,如何提供能夠幫助用戶快速定位內存泄漏的源頭,并能使用戶直觀地獲悉創建所述對象對應的操作的一種對移動應用的內存對象進行分析的技術,成為本領域技術人員亟需解決的技術問題之一。
發明內容
本發明的目的是提供一種對移動應用的內存對象進行分析的方法和裝置。
根據本發明的一個方面,提供一種對移動應用的內存對象進行分析的方法,其中,該方法包括以下步驟:
a獲取用戶自對象容器中所確定的發生內存泄漏的對象,其中,所述對象容器中所存儲的對象與移動應用在內存中的未釋放對象實時對應;
b根據所述發生內存泄漏的對象所對應的標記,查找到所述發生內存泄漏的對象的引用路徑,確定所述內存泄漏的源頭。
優選地,所述步驟b包括:
通過遍歷所有對象,查找所確定的發生內存泄漏的對象;
根據所述發生內存泄漏的對象所對應的標記,反向構建出持有關系的最短路徑,從而查找到所述發生內存泄漏的對象的引用路徑,確定所述內存泄漏的源頭。
優選地,該方法還包括:
x系統調用對象創建方法時,通過劫持方式接管所述對象創建方法,以創建所述對象;
y創建所述對象時,對創建過程中生成的所述對象進行標記;
z將標記后的所述對象及其對應的屬性在所述對象容器中展現給所述用戶。
優選地,所述步驟y包括:
創建所述對象時,使用帶鍵值的弱引用對創建過程中生成的所述對象進行標記。
優選地,該方法還包括:
根據被回收的對象,對所述對象容器進行更新,其中,所述對象容器中所存儲的對象與移動應用在內存中的未釋放對象實時對應。
優選地,所述劫持方式包括:
通過反射找到與所述對象對應的類和所述類中創建所述對象的方法和參數;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于百度在線網絡技術(北京)有限公司,未經百度在線網絡技術(北京)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710002669.8/2.html,轉載請聲明來源鉆瓜專利網。





