[發明專利]一種對移動應用的內存對象進行分析的方法和裝置有效
| 申請號: | 201710002669.8 | 申請日: | 2017-01-03 |
| 公開(公告)號: | CN106776342B | 公開(公告)日: | 2020-04-21 |
| 發明(設計)人: | 劉俊啟 | 申請(專利權)人: | 百度在線網絡技術(北京)有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京同立鈞成知識產權代理有限公司 11205 | 代理人: | 楊澤;劉芳 |
| 地址: | 100085 北京*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 移動 應用 內存 對象 進行 分析 方法 裝置 | ||
1.一種用于對移動應用的內存對象進行分析的方法,其中,該方法包括以下步驟:
a獲取用戶自對象容器中所確定的發生內存泄漏的對象,其中,所述對象容器中所存儲的對象與移動應用在內存中的未釋放對象實時對應;
b根據所述發生內存泄漏的對象所對應的標記,查找到所述發生內存泄漏的對象的引用路徑,確定所述內存泄漏的源頭,所述標記為用類封裝所述對象并進行編號,將標記后的對象按照編號順序存儲至所述對象容器中。
2.根據權利要求1所述的方法,其中,所述步驟b包括:
通過遍歷所有對象,查找所確定的發生內存泄漏的對象;
根據所述發生內存泄漏的對象所對應的標記,反向構建出持有關系的最短路徑,從而查找到所述發生內存泄漏的對象的引用路徑,確定所述內存泄漏的源頭。
3.根據權利要求1或2所述的方法,其中,該方法還包括:
x系統調用對象創建方法時,通過劫持方式接管所述對象創建方法,以創建所述對象;
y創建所述對象時,對創建過程中生成的所述對象進行標記;
z將標記后的所述對象及其對應的屬性在所述對象容器中展現給所述用戶。
4.根據權利要求3所述的方法,其中,所述步驟y包括:
創建所述對象時,使用帶鍵值的弱引用對創建過程中生成的所述對象進行標記。
5.根據權利要求3所述的方法,其中,該方法還包括:
根據被回收的對象,對所述對象容器進行更新,其中,所述對象容器中所存儲的對象與移動應用在內存中的未釋放對象實時對應。
6.根據權利要求4所述的方法,其中,該方法還包括:
根據被回收的對象,對所述對象容器進行更新,其中,所述對象容器中所存儲的對象與移動應用在內存中的未釋放對象實時對應。
7.根據權利要求3所述的方法,其中,所述劫持方式包括:
通過反射找到與所述對象對應的類和所述類中創建所述對象的方法和參數;
修改所述方法的類型,反向調用JAVA層的方法。
8.根據權利要求4-6任一項所述的方法,其中,所述劫持方式包括:
通過反射找到與所述對象對應的類和所述類中創建所述對象的方法和參數;
修改所述方法的類型,反向調用JAVA層的方法。
9.根據權利要求3所述的方法,其中,所述步驟z包括:
按照預定規則,對所述標記后的所述對象及其對應的屬性進行排序;
在所述對象容器中,將經過排序的所述標記后的所述對象及其對應的屬性展現給搜索用戶;
其中,所述預定規則包括以下至少任一項:
按照所述對象的生成時間對所述對象及其對象的屬性進行排序;
按照所述對象的大小對所述對象及其對象的屬性進行排序。
10.根據權利要求4-6任一項所述的方法,其中,所述步驟z包括:
按照預定規則,對所述標記后的所述對象及其對應的屬性進行排序;
在所述對象容器中,將經過排序的所述標記后的所述對象及其對應的屬性展現給搜索用戶;
其中,所述預定規則包括以下至少任一項:
按照所述對象的生成時間對所述對象及其對象的屬性進行排序;
按照所述對象的大小對所述對象及其對象的屬性進行排序。
11.一種用于對移動應用的內存對象進行分析的分析裝置,其中,該分析裝置包括:
獲取裝置,用于獲取用戶自對象容器中所確定的發生內存泄漏的對象,其中,所述對象容器中所存儲的對象與移動應用在內存中的未釋放對象實時對應;
查找裝置,用于根據所述發生內存泄漏的對象所對應的標記,查找到所述發生內存泄漏的對象的引用路徑,確定所述內存泄漏的源頭,所述標記為用類封裝所述對象并進行編號,將標記后的對象按照編號順序存儲至所述對象容器中。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于百度在線網絡技術(北京)有限公司,未經百度在線網絡技術(北京)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710002669.8/1.html,轉載請聲明來源鉆瓜專利網。





