两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種對移動應用的內(nèi)存對象進行分析的方法和裝置與流程

文檔序號:12464246閱讀:213來源:國知局
一種對移動應用的內(nèi)存對象進行分析的方法和裝置與流程

本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其涉及一種對移動應用的內(nèi)存對象進行分析的技術(shù)。



背景技術(shù):

移動端設備內(nèi)存空間比較有限,要求開發(fā)人員在進行移動app(應用)開發(fā)時高效規(guī)范的使用內(nèi)存。特別是在Android(安卓系統(tǒng))開發(fā)中,許多低端機型的內(nèi)存容量較小,不規(guī)范的內(nèi)存使用非常容易產(chǎn)生Out Of Memory(內(nèi)存不足,OOM)問題,極大地損害了用戶體驗。

現(xiàn)有對內(nèi)存對象的分析主要通過集成開發(fā)環(huán)境自帶的內(nèi)存分析工具來完成,這些工具主要通過主動Dump(抓取)內(nèi)存快照,并對Dump得到的內(nèi)存快照文件進行解析,獲取不同類型內(nèi)存對象的信息來獲取當前app內(nèi)存的使用情況。所述內(nèi)存分析工具中只能對底層具體對象的內(nèi)存使用進行分析,無法從更高層次掌握app業(yè)務邏輯對內(nèi)存的使用。例如:圖片在內(nèi)存中使用byte數(shù)組進行表示,通過目前的分析工具能夠獲悉byte數(shù)組的大小,但是卻無法觀察該圖片的樣子,屬于哪個業(yè)務。

當前的內(nèi)存分析工具分析內(nèi)存的方式過于抽象,使得開發(fā)人員無法直觀地對當前內(nèi)存對象使用進行了解,降低了調(diào)試的效率。因此在出現(xiàn)內(nèi)存泄漏,尤其是圖片泄漏時,需要開發(fā)人員人工對內(nèi)存中的對象進行查找,效率低下。

因此,如何提供能夠幫助用戶快速定位內(nèi)存泄漏的源頭,并能使用戶直觀地獲悉創(chuàng)建所述對象對應的操作的一種對移動應用的內(nèi)存對象進行分析的技術(shù),成為本領(lǐng)域技術(shù)人員亟需解決的技術(shù)問題之一。



技術(shù)實現(xiàn)要素:

本發(fā)明的目的是提供一種對移動應用的內(nèi)存對象進行分析的方法和裝置。

根據(jù)本發(fā)明的一個方面,提供一種對移動應用的內(nèi)存對象進行分析的方法,其中,該方法包括以下步驟:

a獲取用戶自對象容器中所確定的發(fā)生內(nèi)存泄漏的對象,其中,所述對象容器中所存儲的對象與移動應用在內(nèi)存中的未釋放對象實時對應;

b根據(jù)所述發(fā)生內(nèi)存泄漏的對象所對應的標記,查找到所述發(fā)生內(nèi)存泄漏的對象的引用路徑,確定所述內(nèi)存泄漏的源頭。

優(yōu)選地,所述步驟b包括:

通過遍歷所有對象,查找所確定的發(fā)生內(nèi)存泄漏的對象;

根據(jù)所述發(fā)生內(nèi)存泄漏的對象所對應的標記,反向構(gòu)建出持有關(guān)系的最短路徑,從而查找到所述發(fā)生內(nèi)存泄漏的對象的引用路徑,確定所述內(nèi)存泄漏的源頭。

優(yōu)選地,該方法還包括:

x系統(tǒng)調(diào)用對象創(chuàng)建方法時,通過劫持方式接管所述對象創(chuàng)建方法,以創(chuàng)建所述對象;

y創(chuàng)建所述對象時,對創(chuàng)建過程中生成的所述對象進行標記;

z將標記后的所述對象及其對應的屬性在所述對象容器中展現(xiàn)給所述用戶。

優(yōu)選地,所述步驟y包括:

創(chuàng)建所述對象時,使用帶鍵值的弱引用對創(chuàng)建過程中生成的所述對象進行標記。

優(yōu)選地,該方法還包括:

根據(jù)被回收的對象,對所述對象容器進行更新,其中,所述對象容器中所存儲的對象與移動應用在內(nèi)存中的未釋放對象實時對應。

優(yōu)選地,所述劫持方式包括:

通過反射找到與所述對象對應的類和所述類中創(chuàng)建所述對象的方法和參數(shù);

修改所述方法的類型,反向調(diào)用JAVA層的方法。

優(yōu)選地,所述步驟z包括:

按照預定規(guī)則,對所述標記后的所述對象及其對應的屬性進行排序;

在所述對象容器中,將經(jīng)過排序的所述標記后的所述對象及其對應的屬性展現(xiàn)給搜索用戶;

其中,所述預定規(guī)則包括以下至少任一項:

按照所述對象的生成時間對所述對象及其對象的屬性進行排序;

按照所述對象的大小對所述對象及其對象的屬性進行排序。

根據(jù)本發(fā)明的另一個方面,還提供了一種用于對移動應用的內(nèi)存對象進行分析的分析裝置,其中,該分析裝置包括:

獲取裝置,用于獲取用戶自對象容器中所確定的發(fā)生內(nèi)存泄漏的對象,其中,所述對象容器中所存儲的對象與移動應用在內(nèi)存中的未釋放對象實時對應;

查找裝置,用于根據(jù)所述發(fā)生內(nèi)存泄漏的對象所對應的標記,查找到所述發(fā)生內(nèi)存泄漏的對象的引用路徑,確定所述內(nèi)存泄漏的源頭。

優(yōu)選地,所述查找裝置用于:

通過遍歷所有對象,查找所確定的發(fā)生內(nèi)存泄漏的對象;

根據(jù)所述發(fā)生內(nèi)存泄漏的對象所對應的標記,反向構(gòu)建出持有關(guān)系的最短路徑,從而查找到所述發(fā)生內(nèi)存泄漏的對象的引用路徑,確定所述內(nèi)存泄漏的源頭。

優(yōu)選地,該分析裝置還包括:

劫持裝置,用于系統(tǒng)調(diào)用對象創(chuàng)建方法時,通過劫持方式接管所述對象創(chuàng)建方法,以創(chuàng)建所述對象;

標記裝置,用于創(chuàng)建所述對象時,對創(chuàng)建過程中生成的所述對象進行標記;

展現(xiàn)裝置,用于將標記后的所述對象及其對應的屬性在所述對象容器中展現(xiàn)給所述用戶。

優(yōu)選地,所述標記裝置用于:

創(chuàng)建所述對象時,使用帶鍵值的弱引用對創(chuàng)建過程中生成的所述對象進行標記。

優(yōu)選地,該分析裝置還包括:

更新裝置,用于根據(jù)被回收的對象,對所述對象容器進行更新,其中,所述對象容器中所存儲的對象與移動應用在內(nèi)存中的未釋放對象實時對應。

優(yōu)選地,所述劫持方式包括:

通過反射找到與所述對象對應的類和所述類中創(chuàng)建所述對象的方法和參數(shù);

修改所述方法的類型,反向調(diào)用JAVA層的方法。

優(yōu)選地,所述展現(xiàn)裝置包括:

排序單元,用于按照預定規(guī)則,對所述標記后的所述對象及其對應的屬性進行排序;

展現(xiàn)單元,用于在所述對象容器中,將經(jīng)過排序的所述標記后的所述對象及其對應的屬性展現(xiàn)給搜索用戶;

其中,所述預定規(guī)則包括以下至少任一項:

按照所述對象的生成時間對所述對象及其對象的屬性進行排序;

按照所述對象的大小對所述對象及其對象的屬性進行排序。

與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:

本發(fā)明根據(jù)用戶自對象容器中確定的發(fā)生內(nèi)存泄漏的對象和與發(fā)生內(nèi)存泄漏的對象對應的標記,查找到內(nèi)存泄漏的引用路徑,幫助用戶快速定位內(nèi)存泄漏的源頭,優(yōu)化內(nèi)存的使用,提升用戶的使用體驗。

進一步地,本發(fā)明對所有對象進行標記,將標記后的所述對象及其對應的屬性在所述對象容器中展現(xiàn)給所述用戶,使得用戶能夠?qū)崟r直觀的觀察內(nèi)存使用情況,獲悉其大小、創(chuàng)建時間等信息,從而更加直觀的獲悉創(chuàng)建所述對象對應的操作,提高了調(diào)試的效率。

附圖說明

通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:

圖1示出根據(jù)本發(fā)明一個方面的一種對移動應用的內(nèi)存對象進行分析的分析裝置的結(jié)構(gòu)示意圖;

圖2示出根據(jù)本發(fā)明一個實施例的對標記后的圖片以及圖片屬性展示的示意圖;

圖3示出根據(jù)本發(fā)明另一個方面的一種對移動應用的內(nèi)存對象進行分析的方法的流程示意圖。

附圖中相同或相似的附圖標記代表相同或相似的部件。

具體實施方式

在更加詳細地討論示例性實施例之前應當提到的是,一些示例性實施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各項操作描述成順序的處理,但是其中的許多操作可以被并行地、并發(fā)地或者同時實施。此外,各項操作的順序可以被重新安排。當其操作完成時所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對應于方法、函數(shù)、規(guī)程、子例程、子程序等等。

后面所討論的方法(其中一些通過流程圖示出)可以通過硬件、軟件、固件、中間件、微代碼、硬件描述語言或者其任意組合來實施。當用軟件、固件、中間件或微代碼來實施時,用以實施必要任務的程序代碼或代碼段可以被存儲在機器或計算機可讀介質(zhì)(比如存儲介質(zhì))中。(一個或多個)處理器可以實施必要的任務。

這里所公開的具體結(jié)構(gòu)和功能細節(jié)僅僅是代表性的,并且是用于描述本發(fā)明的示例性實施例的目的。但是本發(fā)明可以通過許多替換形式來具體實現(xiàn),并且不應當被解釋成僅僅受限于這里所闡述的實施例。

應當理解的是,雖然在這里可能使用了術(shù)語“第一”、“第二”等等來描述各個單元,但是這些單元不應當受這些術(shù)語限制。使用這些術(shù)語僅僅是為了將一個單元與另一個單元進行區(qū)分。舉例來說,在不背離示例性實施例的范圍的情況下,第一單元可以被稱為第二單元,并且類似地第二單元可以被稱為第一單元。這里所使用的術(shù)語“和/或”包括其中一個或更多所列出的相關(guān)聯(lián)項目的任意和所有組合。

應當理解的是,當一個單元被稱為“連接”或“耦合”到另一單元時,其可以直接連接或耦合到所述另一單元,或者可以存在中間單元。與此相對,當一個單元被稱為“直接連接”或“直接耦合”到另一單元時,則不存在中間單元。應當按照類似的方式來解釋被用于描述單元之間的關(guān)系的其他詞語(例如“處于...之間”相比于“直接處于...之間”,“與...鄰近”相比于“與...直接鄰近”等等)。

這里所使用的術(shù)語僅僅是為了描述具體實施例而不意圖限制示例性實施例。除非上下文明確地另有所指,否則這里所使用的單數(shù)形式“一個”、“一項”還意圖包括復數(shù)。還應當理解的是,這里所使用的術(shù)語“包括”和/或“包含”規(guī)定所陳述的特征、整數(shù)、步驟、操作、單元和/或組件的存在,而不排除存在或添加一個或更多其他特征、整數(shù)、步驟、操作、單元、組件和/或其組合。

還應當提到的是,在一些替換實現(xiàn)方式中,所提到的功能/動作可以按照不同于附圖中標示的順序發(fā)生。舉例來說,取決于所涉及的功能/動作,相繼示出的兩幅圖實際上可以基本上同時執(zhí)行或者有時可以按照相反的順序來執(zhí)行。

圖1示出根據(jù)本發(fā)明一個方面的一種對移動應用的內(nèi)存對象進行分析的分析裝置的結(jié)構(gòu)示意圖。分析裝置1包括:獲取裝置101和查找裝置102。

在此,分析裝置1例如位于用戶設備中,所述用戶設備包括但不限于個人電腦、便攜式電腦、平板電腦、智能手機、PDA等,分析裝置1通過網(wǎng)絡、數(shù)據(jù)連接線或者其他方式與移動設備聯(lián)接,以對移動應用的內(nèi)存對象進行分析。移動設備包括但不限于平板電腦、智能手機、PDA等。本領(lǐng)域技術(shù)人員應能理解上述用戶設備和移動設備僅為舉例,現(xiàn)有的或者今后可能出現(xiàn)的用戶設備或移動設備如可適用于本發(fā)明也應包含在本發(fā)明保護范圍內(nèi),并以引用的方式包含于此。本領(lǐng)域技術(shù)人員還應能理解,此處所述用戶設備、移動設備,指可以通過運行預定程序或指令來執(zhí)行數(shù)值計算和/或邏輯計算等預定處理過程的智能電子設備,其可以包括處理器與存儲器,由處理器執(zhí)行在存儲器中預存的存續(xù)指令來執(zhí)行預定處理過程,或是由ASIC、FPGA、DSP等硬件執(zhí)行預定處理過程,或是由上述二者組合來實現(xiàn)。

獲取裝置101獲取用戶自對象容器中所確定的發(fā)生內(nèi)存泄漏的對象,其中,所述對象容器中所存儲的對象與移動應用在內(nèi)存中的未釋放對象實時對應。具體地,某些移動應用使用過的對象,由于非主觀的因素駐留在內(nèi)存的某一內(nèi)存塊中,導致所述內(nèi)存塊無法得到釋放,即所述內(nèi)存發(fā)生內(nèi)存泄漏。移動應用程序運行時,內(nèi)存中對應的對象被存儲于對象容器中,如果在此期間內(nèi)存中某個對象被回收,則分析裝置1將所述對象從容器中移除,以保證該對象容器中所有的對象均為內(nèi)存中未釋放的對象,即所述對象容器中所存儲的對象與移動應用在內(nèi)存中的未釋放對象實時對應,用戶通過人工識別或者通過自動識別的方式確定所述對象容器中發(fā)生內(nèi)存泄漏的對象,獲取裝置101通過一次或多次調(diào)用該用戶設備所提供的應用程序接口(API)或其他約定的通信方式,獲取用戶自對象容器中所確定的發(fā)生內(nèi)存泄漏的對象。

例如,所述對象為圖片,在移動設備的安卓系統(tǒng)中,圖片使用Bitmap標識,即App中所有的圖片都是使用Bitmap類或者相關(guān)的工具類創(chuàng)建出來的,且創(chuàng)建的過程在安卓操作系統(tǒng)的Framework層完成,圖片被放入對象容器中后,如果圖片被回收,即調(diào)用了Bitmap的finalize方法,分析裝置1將該圖片從所述對象容器中移除,所述對象容器中所存儲的圖片與移動應用在內(nèi)存中的未釋放圖片實時對應,用戶根據(jù)開發(fā)經(jīng)驗、當前運行的程序或者當前活動窗口判斷哪些圖片發(fā)生了內(nèi)存泄漏,或者通過自動識別工具識別哪些圖片發(fā)生了內(nèi)存泄漏,以便分析裝置1對發(fā)生內(nèi)存泄漏的圖片進行分析和定位,例如,某個圖片只能出現(xiàn)在百度地圖中,用戶發(fā)現(xiàn)此時百度地圖已經(jīng)被關(guān)閉,而且近期內(nèi)該百度地圖不會再被調(diào)用,則判斷該圖片發(fā)生了內(nèi)存泄漏;如果用戶要把該圖片留在內(nèi)存中,以便下次訪問百度地圖時訪問速度加快,則判斷該圖片為緩存圖片,不屬于內(nèi)存泄漏。

本領(lǐng)域技術(shù)人員應能理解,用戶自對象容器中確定發(fā)生內(nèi)存泄漏的對象的方式僅為舉例,現(xiàn)有的或者今后可能出現(xiàn)的用戶確定發(fā)生內(nèi)存泄漏的對象的方式如可適用于本發(fā)明都應包含在本發(fā)明的保護范圍內(nèi),并在此以引用的方式包含于此。

查找裝置102根據(jù)所述發(fā)生內(nèi)存泄漏的對象所對應的標記,查找到所述發(fā)生內(nèi)存泄漏的對象的引用路徑,確定所述內(nèi)存泄漏的源頭。具體地,用戶若想快速分析并定位內(nèi)存泄漏的源頭,可以使用預定的方式對內(nèi)存中的所有對象進行標記。例如,通過hook方式劫持所述對象,完成對所述對象的標記,其中,所述標記為用另一個類封裝所述對象并編號,并不會對所述對象的內(nèi)容進行改變,然后將標記后的對象按照編號順序放入所述對象容器中統(tǒng)一管理,其中,所述對象容器中所存儲的所述對象與移動應用在內(nèi)存中未釋放的對象實時對應,用戶通過人工識別或者通過自動識別的方式確定所述對象容器中發(fā)生內(nèi)存泄漏的對象,獲取裝置101獲取用戶自對象容器中所確定的發(fā)生內(nèi)存泄漏的帶標記的對象。在移動設備中,應用程序的內(nèi)存占用情況被存儲為系統(tǒng)內(nèi)存檢查文件,在對該文件進行分析時,查找裝置102根據(jù)獲取裝置101獲取的對象的標記,通過預定的搜索方法,例如,深度優(yōu)先搜索或者廣度優(yōu)先搜索,搜索系統(tǒng)中所述對象被調(diào)用的引用路徑,根據(jù)所述引用路徑確定調(diào)用過所述對象,并且在調(diào)用完成后沒有回收所述對象的程序或者程序段,查找裝置102據(jù)此確定造成所述對象發(fā)生內(nèi)存泄漏的源頭。

例如,所述對象為圖片,移動設備采用的系統(tǒng)為安卓系統(tǒng)時,系統(tǒng)中每個應用程序的內(nèi)存占用情況可以使用內(nèi)存快照進行描述,內(nèi)存快照一般存儲為hprof格式的文件,其中,所述hprof格式的文件為一種系統(tǒng)內(nèi)存檢查文件,所述hprof格式的文件描述了當前應用程序中所有的基本類型,對象、棧和堆的使用狀態(tài),通過對該文件的分析,能夠找到某個類的對象在內(nèi)存中的引用路徑,具體地,分析裝置1對所有的Bitmap都進行了標記,在讀取分析hprof文件時,根據(jù)獲取裝置101獲取到的發(fā)生內(nèi)存泄漏的圖片的標記,查找裝置102搜索查找所述對象容器中的圖片,并存儲所述圖片的引用路徑,查找到所述發(fā)生內(nèi)存泄漏的圖片,得到所述發(fā)生內(nèi)存泄漏的圖片的引用路徑,確定圖片泄露的源頭。

本領(lǐng)域技術(shù)人員應能理解,上述查找到所述發(fā)生內(nèi)存泄漏的對象的引用路徑的方法僅為舉例,現(xiàn)有的或者今后可能出現(xiàn)的查找引用路徑的方法如可適用于本發(fā)明,都應包含在本發(fā)明的保護范圍內(nèi),并在此以引用的方式包含于此。

優(yōu)選地,所述查找裝置102通過遍歷所有對象,查找所確定的發(fā)生內(nèi)存泄漏的對象;根據(jù)所述發(fā)生內(nèi)存泄漏的對象所對應的標記,反向構(gòu)建出持有關(guān)系的最短路徑,從而查找到所述發(fā)生內(nèi)存泄漏的對象的引用路徑,確定所述內(nèi)存泄漏的源頭。具體地,所述查找裝置102通過預定的遍歷方法遍歷所有對象,在遍歷的過程中根據(jù)所述標記,查找所確定的發(fā)生內(nèi)存泄漏的對象,并在遍歷的過程中存儲所述對象的引用關(guān)系;根據(jù)所述發(fā)生內(nèi)存泄漏的對象所對應的標記,以及在遍歷過程中存儲的所述對象的引用關(guān)系,反向構(gòu)建出持有關(guān)系的最短路徑,即可得到所述對象的引用路徑,找到所述對象泄露的源頭。其中,所述遍歷是指沿著某條搜索路線,依次對每個結(jié)點均做一次且僅做一次訪問;其中,所述遍歷包括但不限于:圖的遍歷,所述圖的遍歷包括但不限于:深度優(yōu)先遍歷、廣度優(yōu)先遍歷等;其中,所述引用關(guān)系指遍歷中引用所述對象的某個節(jié)點存儲的父節(jié)點或者子節(jié)點。

例如,所述對象為圖片類型,查找裝置102通過廣度優(yōu)先遍歷方法,遍歷所有的圖片,以找到所有發(fā)生泄漏的圖片,并在遍歷的過程中存儲所述發(fā)生泄漏的圖片的引用關(guān)系,例如存儲發(fā)生泄漏的每一個圖片被引用的節(jié)點的父節(jié)點或者子節(jié)點的信息,查找裝置102通過找到的發(fā)生泄漏的圖片,并且基于存儲的所述引用關(guān)系,反向構(gòu)建構(gòu)持有關(guān)系的最短路徑,即可得到所述圖片的引用路徑,根據(jù)所述引用路徑,找到圖片泄漏的應用程序。

在此,分析裝置1根據(jù)用戶自對象容器中確定的發(fā)生內(nèi)存泄漏的對象和與發(fā)生內(nèi)存泄漏的對象對應的標記,查找到內(nèi)存泄漏的引用路徑,幫助用戶快速定位內(nèi)存泄漏的源頭,排除無效緩存,優(yōu)化內(nèi)存的使用,提升用戶的使用體驗。

優(yōu)選地,分析裝置1還包括:劫持裝置103(未示出)、標記裝置104(未示出)和展現(xiàn)裝置105(未示出)。

其中,系統(tǒng)調(diào)用對象創(chuàng)建方法時,劫持裝置103通過劫持方式接管所述對象創(chuàng)建方法,以創(chuàng)建所述對象。具體地,要想對移動應用中的對象進行標記,必須在對象的創(chuàng)建過程中就獲取到圖片,可以通過劫持裝置103的劫持方式,例如hook機制,在系統(tǒng)調(diào)用所述對象相應的創(chuàng)建方法時,對系統(tǒng)方法進行劫持,接管所述對象的創(chuàng)建周期,修改創(chuàng)建所述對象的方法的類型,以創(chuàng)建所述對象。優(yōu)選地,所述劫持方式包括:1)通過反射找到與所述對象對應的類和所述類中創(chuàng)建所述對象的方法和參數(shù);2)修改所述方法的類型,反向調(diào)用JAVA層的方法。具體地,在JAVA層通過反射找到與對象創(chuàng)建方法對應的類和方法和參數(shù)等信息,在系統(tǒng)native層修改該對象創(chuàng)建方法類型,在系統(tǒng)native層處理該對象創(chuàng)建過程,在系統(tǒng)native層反向調(diào)用Java層的方法通知對象創(chuàng)建的事件,在JAVA層完成對象的標記。例如,當所述對象為圖片時,在JAVA層通過反射找到與圖片創(chuàng)建方法對應的Bitmap類、Bitmap類中創(chuàng)建圖片的createBitmap方法和參數(shù)等信息,在系統(tǒng)native層修改圖片創(chuàng)建方法類型,將其修改為native類型的方法,當系統(tǒng)執(zhí)行到該方法時去尋找該方法的native實現(xiàn),再通過JNI反向調(diào)用JAVA層的方法,在JAVA層完成所述圖片的標記。

本領(lǐng)域技術(shù)人員應能理解,上述劫持方式僅為舉例,現(xiàn)有的或者今后可能出現(xiàn)的劫持方式,如可適用于本發(fā)明都應包含在本發(fā)明的保護范圍內(nèi),并在此以引用的方式包含于此。

創(chuàng)建所述對象時,標記裝置104對創(chuàng)建過程中生成的所述對象進行標記。具體地,在所述對象的創(chuàng)建過程中,每個對象創(chuàng)建時,先調(diào)用方法A,告知標記裝置104創(chuàng)建即將開始,然后通過正常的對象創(chuàng)建方法創(chuàng)建所述對象,對象創(chuàng)建完成之后調(diào)用方法B告知標記裝置104創(chuàng)建完成,可以開始標記。標記裝置104通過所述方法B對所述創(chuàng)建完的對象進行標記,在每創(chuàng)建完一個對象的同時便標記一個對象,直到完成對所有對象的標記,優(yōu)選地,標記裝置104將標記完成后的所述對象按照順序放入所述對象容器中統(tǒng)一管理。其中,所述方法A為用戶設計的,對象創(chuàng)建之前調(diào)用的方法,以告知標記裝置104準備進行對象創(chuàng)建;所述方法B為用戶根據(jù)需要設計的,告知標記裝置104對象創(chuàng)建已經(jīng)完成,并對所述對象進行標記的方法。

優(yōu)選地,創(chuàng)建所述對象時,標記裝置104使用帶鍵值的弱引用對創(chuàng)建過程中生成的所述對象進行標記。具體地,當所述對象被其他對象強持有時,能夠通過所述帶鍵值的弱引用觀察到該對象,如果該對象沒有被強持有時,垃圾回收器也能夠直接回收掉該對象而不影響內(nèi)存占用的分析,因此標記裝置104使用帶鍵值的弱引用對創(chuàng)建過程中生成的所述對象進行標記,有助于對所述對象的追蹤和釋放,優(yōu)選地,對象標記完成后,標記裝置104將所述弱引用按照順序放入對象容器中統(tǒng)一管理。

本領(lǐng)域技術(shù)人員應能理解,所述使用帶鍵值的弱引用對創(chuàng)建過程中生成的所述對象進行標記的標記方式僅為舉例,現(xiàn)有的或者今后可能出現(xiàn)的標記方式,如可適用于本發(fā)明都應包含在本發(fā)明的保護范圍內(nèi),并在此以引用的方式包含于此。

展現(xiàn)裝置105將標記后的所述對象及其對應的屬性在所述對象容器中展現(xiàn)給所述用戶。具體地,展現(xiàn)裝置105獲取容器中所有對象的弱引用,直接使用對象的所述帶鍵值(key)的弱引用,在所述對象容器中,展示相應的所述對象,展現(xiàn)裝置105可以隨機展現(xiàn)所述對象容器中標記后的所述對象及其對應的屬性,也可以將所述對象進行排序后,展現(xiàn)給所述用戶;展現(xiàn)裝置105例如通過一次或多次調(diào)用諸如JSP、ASP或PHP等動態(tài)頁面技術(shù),以約定的顯示方式,提供給所述用戶,例如,將所述對象以每頁展示預定數(shù)量的形式,提供給所述用戶,用戶可以通過下拉屏幕或點擊“下一頁”圖標按鈕,從而繼續(xù)查看多個所述對象,用戶還可通過在顯示窗口通過點擊按鈕選擇排序的方式,例如選擇按照大小排序或者按照生成時間排序。

例如,所述對象類型為圖片時,展現(xiàn)裝置105根據(jù)時間倒敘排列展示所述標記圖片的示意圖如圖2所示,圖2中展現(xiàn)裝置105向用戶展現(xiàn)了所述標記圖片,所述標記圖片的尺寸、存儲大小、對圖片的標記等圖片的屬性,以及展現(xiàn)裝置105采用的排序方法、展現(xiàn)圖片的數(shù)量和總大小,圖2中key表示所述圖片的標記。

在此,分析裝置1將標記后的所述對象及其對應的屬性在所述對象容器中展現(xiàn)給所述用戶,使得用戶能夠?qū)崟r直觀地觀察內(nèi)存使用情況,觀察所述對象的樣子,屬于哪個業(yè)務,并獲悉其大小、創(chuàng)建時間等信息,從而更加直觀地獲悉創(chuàng)建所述對象對應的操作,提高了調(diào)試的效率。進一步地,用戶根據(jù)展現(xiàn)裝置105在所述對象容器中展現(xiàn)的所述對象及其對象的屬性,判斷該對象是否為內(nèi)存泄漏,確定發(fā)生內(nèi)存泄漏的對象,獲取裝置101獲取用戶根據(jù)展現(xiàn)裝置105確定的發(fā)生內(nèi)存泄漏的對象及其標記,查找裝置102根據(jù)所述標記,查找并確定內(nèi)存泄漏的源頭。

一個典型的應用場景如下:該分析裝置1用于“手機百度”產(chǎn)品中,在調(diào)試模式下,使用該分析裝置1對“手機百度”中的圖片內(nèi)存使用進行分析,快速地排查程序中的圖片泄漏,無效緩存等一系列內(nèi)存使用問題,優(yōu)化“手機百度”的性能。

本領(lǐng)域技術(shù)人員應能理解,用戶確定發(fā)生內(nèi)存泄漏的對象的方法僅為舉例,現(xiàn)有的或者今后可能出現(xiàn)的用戶確定發(fā)生內(nèi)存泄漏的對象的方法如可使用與本發(fā)明都應包含在本發(fā)明的保護范圍內(nèi),并在此以引用的方式包含于此。

優(yōu)選地,分析裝置1還包括:更新裝置106(未示出)。

其中,更新裝置106根據(jù)被回收的對象,對所述對象容器進行更新,其中,所述對象容器中所存儲的對象與移動應用在內(nèi)存中的未釋放對象實時對應。具體地,移動應用程序運行過程中,如果對象被收回,則該對象沒有造成內(nèi)存泄漏,更新裝置106將所述對象從所述對象容器中實時移除,更新所述對象容器,以保證所述對象容器中所有對象均為內(nèi)存中未釋放的對象,并且,所述對象容器中所存儲的對象與移動應用在內(nèi)存中未釋放的對象實時對應。例如,所述對象為圖片,如果圖片被回收,即調(diào)用了Bitmap的finalize方法,則更新裝置按照同樣的方法將所述圖片從所述對象容器中移除。

在此,被回收的對象被收回時,將所述對象從對象容器中移除,以保證該對象容器中的所有圖片均為內(nèi)存中未釋放的圖片。

優(yōu)選地,所述展現(xiàn)裝置105包括:排序單元1051(未示出)和展現(xiàn)單元1052(未示出)。

其中,排序單元1051按照預定規(guī)則,對所述標記后的所述對象及其對應的屬性進行排序;其中,所述預定規(guī)則包括以下至少任一項:

按照所述對象的生成時間對所述對象及其對象的屬性進行排序;

按照所述對象的大小對所述對象及其對象的屬性進行排序。

具體地,為了便于用戶直觀的觀察當前移動應用中駐留內(nèi)存的對象,排序單元1051按照預定規(guī)則,例如按根據(jù)對象生成的時間順序?qū)λ鰧ο笠约八鰧ο蟮膶傩园凑枕樞蚧蛘叩剐蜻M行排序,或者根據(jù)對象的大小對所述對象以及所述對象的屬性進行順序或者倒序排序。其中,所述對象生成的時間順序?qū)谒鰳擞浀捻樞颉?/p>

展現(xiàn)單元1052在所述對象容器中,將經(jīng)過排序的所述標記后的所述對象及其對應的屬性展現(xiàn)給搜索用戶。具體地,所述展現(xiàn)單元1052通過彈出對話框的方式,將經(jīng)過排序的標記后的所述對象及其對應的屬性展現(xiàn)給所述搜索用戶;或者所述展現(xiàn)單元1052通過將所述經(jīng)過排序的所述標記后的所述對象及其對應的屬性存儲為文件格式的形式提供給用戶,以便用戶實時保存所述內(nèi)存占用過程。進一步地,所述對象展現(xiàn)的過程是實時的,動態(tài)變化的過程,所述對象的數(shù)量、內(nèi)容或者屬性會隨著程序的運行而不斷變化。當所述對象為圖片時,展現(xiàn)裝置105對所述圖片的展示如圖2所示,圖2示對標記后的圖片以及圖片屬性展示的示意圖。

圖3示出根據(jù)本發(fā)明另一個方面的一種對移動應用的內(nèi)存對象進行分析的方法的流程示意圖。

在步驟S301中,分析裝置1獲取用戶自對象容器中所確定的發(fā)生內(nèi)存泄漏的對象,其中,所述對象容器中所存儲的對象與移動應用在內(nèi)存中的未釋放對象實時對應。具體地,某些移動應用使用過的對象,由于非主觀的因素駐留在內(nèi)存的某一內(nèi)存塊中,導致所述內(nèi)存塊無法得到釋放,即所述內(nèi)存發(fā)生內(nèi)存泄漏。移動應用程序運行時,內(nèi)存中對應的對象被存儲于對象容器中,如果在此期間內(nèi)存中某個對象被回收,則分析裝置1將所述對象從容器中移除,以保證該對象容器中所有的對象均為內(nèi)存中未釋放的對象,即所述對象容器中所存儲的對象與移動應用在內(nèi)存中的未釋放對象實時對應,用戶通過人工識別或者通過自動識別的方式確定所述對象容器中發(fā)生內(nèi)存泄漏的對象,在步驟S301中,分析裝置1通過一次或多次調(diào)用該用戶設備所提供的應用程序接口(API)或其他約定的通信方式,獲取用戶自對象容器中所確定的發(fā)生內(nèi)存泄漏的對象。

例如,所述對象為圖片,在移動設備的安卓系統(tǒng)中,圖片使用Bitmap標識,即App中所有的圖片都是使用Bitmap類或者相關(guān)的工具類創(chuàng)建出來的,且創(chuàng)建的過程在安卓操作系統(tǒng)的Framework層完成,圖片被放入對象容器中后,如果圖片被回收,即調(diào)用了Bitmap的finalize方法,分析裝置1將該圖片從所述對象容器中移除,所述對象容器中所存儲的圖片與移動應用在內(nèi)存中的未釋放圖片實時對應,用戶根據(jù)開發(fā)經(jīng)驗、當前運行的程序或者當前活動窗口判斷哪些圖片發(fā)生了內(nèi)存泄漏,或者通過自動識別工具識別哪些圖片發(fā)生了內(nèi)存泄漏,以便分析裝置1對發(fā)生內(nèi)存泄漏的圖片進行分析和定位,例如,某個圖片只能出現(xiàn)在百度地圖中,用戶發(fā)現(xiàn)此時百度地圖已經(jīng)被關(guān)閉,而且近期內(nèi)該百度地圖不會再被調(diào)用,則判斷該圖片發(fā)生了內(nèi)存泄漏;如果用戶要把該圖片留在內(nèi)存中,以便下次訪問百度地圖時訪問速度加快,則判斷該圖片為緩存圖片,不屬于內(nèi)存泄漏。

本領(lǐng)域技術(shù)人員應能理解,用戶自對象容器中確定發(fā)生內(nèi)存泄漏的對象的方式僅為舉例,現(xiàn)有的或者今后可能出現(xiàn)的用戶確定發(fā)生內(nèi)存泄漏的對象的方式如可適用于本發(fā)明都應包含在本發(fā)明的保護范圍內(nèi),并在此以引用的方式包含于此。

在步驟S302中,分析裝置1根據(jù)所述發(fā)生內(nèi)存泄漏的對象所對應的標記,查找到所述發(fā)生內(nèi)存泄漏的對象的引用路徑,確定所述內(nèi)存泄漏的源頭。具體地,用戶若想快速分析并定位內(nèi)存泄漏的源頭,可以使用預定的方式對內(nèi)存中的所有對象進行標記。例如,通過hook方式劫持所述對象,完成對所述對象的標記,其中,所述標記為用另一個類封裝所述對象并編號,并不會對所述對象的內(nèi)容進行改變,然后將標記后的對象按照編號順序放入所述對象容器中統(tǒng)一管理,其中,所述對象容器中所存儲的所述對象與移動應用在內(nèi)存中未釋放的對象實時對應,用戶通過人工識別或者通過自動識別的方式確定所述對象容器中發(fā)生內(nèi)存泄漏的對象,在步驟S301中,分析裝置1獲取用戶自對象容器中所確定的發(fā)生內(nèi)存泄漏的帶標記的對象。在移動設備中,應用程序的內(nèi)存占用情況被存儲為系統(tǒng)內(nèi)存檢查文件,在對該文件進行分析時,在步驟S302中,分析裝置1根據(jù)其在步驟S301中獲取的對象的標記,通過預定的搜索方法,例如,深度優(yōu)先搜索或者廣度優(yōu)先搜索,搜索系統(tǒng)中所述對象被調(diào)用的引用路徑,根據(jù)所述引用路徑確定調(diào)用過所述對象,并且在調(diào)用完成后沒有回收所述對象的程序或者程序段,在步驟S301中,分析裝置1據(jù)此確定造成所述對象發(fā)生內(nèi)存泄漏的源頭。

例如,所述對象為圖片,移動設備采用的系統(tǒng)為安卓系統(tǒng)時,系統(tǒng)中每個應用程序的內(nèi)存占用情況可以使用內(nèi)存快照進行描述,內(nèi)存快照一般存儲為hprof格式的文件,其中,所述hprof格式的文件為一種系統(tǒng)內(nèi)存檢查文件,所述hprof格式的文件描述了當前應用程序中所有的基本類型,對象、棧和堆的使用狀態(tài),通過對該文件的分析,能夠找到某個類的對象在內(nèi)存中的引用路徑,具體地,分析裝置1對所有的Bitmap都進行了標記,在讀取分析hprof文件時,根據(jù)分析裝置1在步驟S301中獲取到的發(fā)生內(nèi)存泄漏的圖片的標記,在步驟S302中,分析裝置1搜索查找所述對象容器中的圖片,并存儲所述圖片的引用路徑,查找到所述發(fā)生內(nèi)存泄漏的圖片,得到所述發(fā)生內(nèi)存泄漏的圖片的引用路徑,確定圖片泄露的源頭。

本領(lǐng)域技術(shù)人員應能理解,上述查找到所述發(fā)生內(nèi)存泄漏的對象的引用路徑的方法僅為舉例,現(xiàn)有的或者今后可能出現(xiàn)的查找引用路徑的方法如可適用于本發(fā)明,都應包含在本發(fā)明的保護范圍內(nèi),并在此以引用的方式包含于此。

優(yōu)選地,在步驟S302中,分析裝置1通過遍歷所有對象,查找所確定的發(fā)生內(nèi)存泄漏的對象;根據(jù)所述發(fā)生內(nèi)存泄漏的對象所對應的標記,反向構(gòu)建出持有關(guān)系的最短路徑,從而查找到所述發(fā)生內(nèi)存泄漏的對象的引用路徑,確定所述內(nèi)存泄漏的源頭。具體地,在步驟S302中,分析裝置1通過預定的遍歷方法遍歷所有對象,在遍歷的過程中根據(jù)所述標記,查找所確定的發(fā)生內(nèi)存泄漏的對象,并在遍歷的過程中存儲所述對象的引用關(guān)系;根據(jù)所述發(fā)生內(nèi)存泄漏的對象所對應的標記,以及在遍歷過程中存儲的所述對象的引用關(guān)系,反向構(gòu)建出持有關(guān)系的最短路徑,即可得到所述對象的引用路徑,找到所述對象泄露的源頭。其中,所述遍歷是指沿著某條搜索路線,依次對每個結(jié)點均做一次且僅做一次訪問;其中,所述遍歷包括但不限于:圖的遍歷,所述圖的遍歷包括但不限于:深度優(yōu)先遍歷、廣度優(yōu)先遍歷等;其中,所述引用關(guān)系指遍歷中引用所述對象的某個節(jié)點存儲的父節(jié)點或者子節(jié)點。

例如,所述對象為圖片類型,在步驟S302中,分析裝置1通過廣度優(yōu)先遍歷方法,遍歷所有的圖片,以找到所有發(fā)生泄漏的圖片,并在遍歷的過程中存儲所述發(fā)生泄漏的圖片的引用關(guān)系,例如存儲發(fā)生泄漏的每一個圖片被引用的節(jié)點的父節(jié)點或者子節(jié)點的信息,在步驟S302中,分析裝置1通過找到的發(fā)生泄漏的圖片,并且基于存儲的所述引用關(guān)系,反向構(gòu)建構(gòu)持有關(guān)系的最短路徑,即可得到所述圖片的引用路徑,根據(jù)所述引用路徑,找到圖片泄漏的應用程序。

在此,分析裝置1根據(jù)用戶自對象容器中確定的發(fā)生內(nèi)存泄漏的對象和與發(fā)生內(nèi)存泄漏的對象對應的標記,查找到內(nèi)存泄漏的引用路徑,幫助用戶快速定位內(nèi)存泄漏的源頭,排除無效緩存,優(yōu)化內(nèi)存的使用,提升用戶的使用體驗。

優(yōu)選地,該方法還包括:步驟S303(未示出)、步驟S304(未示出)和步驟S305(未示出)。

其中,系統(tǒng)調(diào)用對象創(chuàng)建方法時,在步驟S301中,分析裝置1通過劫持方式接管所述對象創(chuàng)建方法,以創(chuàng)建所述對象。具體地,要想對移動應用中的對象進行標記,必須在對象的創(chuàng)建過程中就獲取到圖片,可以通過步驟S303的劫持方式,例如hook機制,在系統(tǒng)調(diào)用所述對象相應的創(chuàng)建方法時,對系統(tǒng)方法進行劫持,接管所述對象的創(chuàng)建周期,修改創(chuàng)建所述對象的方法的類型,以創(chuàng)建所述對象。優(yōu)選地,所述劫持方式包括:1)通過反射找到與所述對象對應的類和所述類中創(chuàng)建所述對象的方法和參數(shù);2)修改所述方法的類型,反向調(diào)用JAVA層的方法。具體地,在JAVA層通過反射找到與對象創(chuàng)建方法對應的類和方法和參數(shù)等信息,在系統(tǒng)native層修改該對象創(chuàng)建方法類型,在系統(tǒng)native層處理該對象創(chuàng)建過程,在系統(tǒng)native層反向調(diào)用Java層的方法通知對象創(chuàng)建的事件,在JAVA層完成對象的標記。例如,當所述對象為圖片時,在JAVA層通過反射找到與圖片創(chuàng)建方法對應的Bitmap類、Bitmap類中創(chuàng)建圖片的createBitmap方法和參數(shù)等信息,在系統(tǒng)native層修改圖片創(chuàng)建方法類型,將其修改為native類型的方法,當系統(tǒng)執(zhí)行到該方法時就會去尋找該方法的native實現(xiàn),再通過JNI反向調(diào)用JAVA層的方法,在JAVA層完成所述圖片的標記。

本領(lǐng)域技術(shù)人員應能理解,上述劫持方式僅為舉例,現(xiàn)有的或者今后可能出現(xiàn)的劫持方式,如可適用于本發(fā)明都應包含在本發(fā)明的保護范圍內(nèi),并在此以引用的方式包含于此。

創(chuàng)建所述對象時,在步驟S304中,分析裝置1對創(chuàng)建過程中生成的所述對象進行標記。具體地,在所述對象的創(chuàng)建過程中,每個對象創(chuàng)建時,先調(diào)用方法A,告知分析裝置1創(chuàng)建即將開始,然后通過正常的對象創(chuàng)建方法創(chuàng)建所述對象,對象創(chuàng)建完成之后調(diào)用方法B告知分析裝置1創(chuàng)建完成,可以開始標記。在步驟S304中,分析裝置1通過所述方法B對所述創(chuàng)建完的對象進行標記,在每創(chuàng)建完一個對象的同時便標記一個對象,直到完成對所有對象的標記,優(yōu)選地,在步驟S304中,分析裝置1將標記完成后的所述對象按照順序放入所述對象容器中統(tǒng)一管理。其中,所述方法A為用戶設計的,對象創(chuàng)建之前調(diào)用的方法,以告知分析裝置1準備進行對象創(chuàng)建;所述方法B為用戶根據(jù)需要設計的,告知分析裝置1對象創(chuàng)建已經(jīng)完成,并對所述對象進行標記的方法。

優(yōu)選地,創(chuàng)建所述對象時,在步驟S304中,分析裝置1使用帶鍵值的弱引用對創(chuàng)建過程中生成的所述對象進行標記。具體地,當所述對象被其他對象強持有時,能夠通過所述帶鍵值的弱引用觀察到該對象,如果該對象沒有被強持有時,垃圾回收器也能夠直接回收掉該對象而不影響內(nèi)存占用的分析,因此在步驟S304中,分析裝置1使用帶鍵值的弱引用對創(chuàng)建過程中生成的所述對象進行標記,有助于對所述對象的追蹤和釋放,優(yōu)選地,對象標記完成后,分析裝置1在步驟S304中將所述弱引用按照順序放入對象容器中統(tǒng)一管理。

本領(lǐng)域技術(shù)人員應能理解,所述使用帶鍵值的弱引用對創(chuàng)建過程中生成的所述對象進行標記的標記方式僅為舉例,現(xiàn)有的或者今后可能出現(xiàn)的標記方式,如可適用于本發(fā)明都應包含在本發(fā)明的保護范圍內(nèi),并在此以引用的方式包含于此。

在步驟S305中,分析裝置1將標記后的所述對象及其對應的屬性在所述對象容器中展現(xiàn)給所述用戶。具體地,在步驟S305中,分析裝置1獲取容器中所有對象的弱引用,直接使用對象的所述帶鍵值(key)的弱引用,在所述對象容器中,展示相應的所述對象,在步驟S305中,分析裝置1可以隨機展現(xiàn)所述對象容器中標記后的所述對象及其對應的屬性,也可以將所述對象進行排序后,展現(xiàn)給所述用戶;在步驟S305中,分析裝置1例如通過一次或多次調(diào)用諸如JSP、ASP或PHP等動態(tài)頁面技術(shù),以約定的顯示方式,提供給所述用戶,例如,將所述對象以每頁展示預定數(shù)量的形式,提供給所述用戶,用戶可以通過下拉屏幕或點擊“下一頁”圖標按鈕,從而繼續(xù)查看多個所述對象,用戶還可通過在顯示窗口通過點擊按鈕選擇排序的方式,例如選擇按照大小排序或者按照生成時間排序。

例如,所述對象類型為圖片時,在步驟S305中,分析裝置1根據(jù)時間倒敘排列展示所述標記圖片的示意圖如圖2所示,圖2中展現(xiàn)裝置105向用戶展現(xiàn)了所述標記圖片,所述標記圖片的尺寸、存儲大小、對圖片的標記等圖片的屬性,以及分析裝置1采用的排序方法、展現(xiàn)圖片的數(shù)量和總大小,圖2中key表示所述圖片的標記。

在此,分析裝置1將標記后的所述對象及其對應的屬性在所述對象容器中展現(xiàn)給所述用戶,使得用戶能夠?qū)崟r直觀地觀察內(nèi)存使用情況,觀察所述對象的樣子,屬于哪個業(yè)務,并獲悉其大小、創(chuàng)建時間等信息,從而更加直觀地獲悉創(chuàng)建所述對象對應的操作,提高了調(diào)試的效率。進一步地,用戶根據(jù)分析裝置1在所述對象容器中展現(xiàn)的所述對象及其對象的屬性,判斷該對象是否為內(nèi)存泄漏,確定發(fā)生內(nèi)存泄漏的對象,在步驟S301中,分析裝置1獲取用戶根據(jù)分析裝置1在步驟S305中確定的發(fā)生內(nèi)存泄漏的對象及其標記,在步驟S302中,分析裝置1根據(jù)所述標記,查找并確定內(nèi)存泄漏的源頭。

一個典型的應用場景如下:該方法應用于“手機百度”產(chǎn)品中,在調(diào)試模式下,使用該方法對“手機百度”中的圖片內(nèi)存使用進行分析,快速地排查程序中的圖片泄漏,無效緩存等一系列內(nèi)存使用問題,優(yōu)化“手機百度”的性能。

本領(lǐng)域技術(shù)人員應能理解,用戶確定發(fā)生內(nèi)存泄漏的對象的方法僅為舉例,現(xiàn)有的或者今后可能出現(xiàn)的用戶確定發(fā)生內(nèi)存泄漏的對象的方法如可使用與本發(fā)明都應包含在本發(fā)明的保護范圍內(nèi),并在此以引用的方式包含于此。

優(yōu)選地,該方法還包括:步驟S306(未示出)。

其中,在步驟S306中,分析裝置1根據(jù)被回收的對象,對所述對象容器進行更新,其中,所述對象容器中所存儲的對象與移動應用在內(nèi)存中的未釋放對象實時對應。具體地,移動應用程序運行過程中,如果對象被收回,則該對象沒有造成內(nèi)存泄漏,在步驟S306中,分析裝置1將所述對象從所述對象容器中實時移除,更新所述對象容器,以保證所述對象容器中所有對象均為內(nèi)存中未釋放的對象,并且,所述對象容器中所存儲的對象與移動應用在內(nèi)存中未釋放的對象實時對應。例如,所述對象為圖片,如果圖片被回收,即調(diào)用了Bitmap的finalize方法,則分析裝置1按照同樣的方法將所述圖片從所述對象容器中移除。

在此,被回收的對象被收回時,將所述對象從對象容器中移除,以保證該對象容器中的所有圖片均為內(nèi)存中未釋放的圖片。

優(yōu)選地,所述步驟S305包括:子步驟S3051(未示出)和子步驟S3052(未示出)。

其中,在子步驟S3051中,分析裝置1按照預定規(guī)則,對所述標記后的所述對象及其對應的屬性進行排序;其中,所述預定規(guī)則包括以下至少任一項:

按照所述對象的生成時間對所述對象及其對象的屬性進行排序;

按照所述對象的大小對所述對象及其對象的屬性進行排序。

具體地,為了便于用戶直觀的觀察當前移動應用中駐留內(nèi)存的對象,在子步驟S3051中,分析裝置1按照預定規(guī)則,例如按根據(jù)對象生成的時間順序?qū)λ鰧ο笠约八鰧ο蟮膶傩园凑枕樞蚧蛘叩剐蜻M行排序,或者根據(jù)對象的大小對所述對象以及所述對象的屬性進行順序或者倒序排序。其中,所述對象生成的時間順序?qū)谒鰳擞浀捻樞颉?/p>

在子步驟S3052中,分析裝置1在所述對象容器中,將經(jīng)過排序的所述標記后的所述對象及其對應的屬性展現(xiàn)給搜索用戶。具體地,在子步驟S3052中,分析裝置1通過彈出對話框的方式,將經(jīng)過排序的標記后的所述對象及其對應的屬性展現(xiàn)給所述搜索用戶;或者在子步驟S3052中,分析裝置1通過將所述經(jīng)過排序的所述標記后的所述對象及其對應的屬性存儲為文件格式的形式提供給用戶,以便用戶實時保存所述內(nèi)存占用過程。進一步地,所述對象展現(xiàn)的過程是實時的,動態(tài)變化的過程,所述對象的數(shù)量、內(nèi)容或者屬性會隨著程序的運行而不斷變化。當所述對象為圖片時,在步驟S305中,分析裝置1對所述圖片的展示如圖2所示,圖2示對標記后的圖片以及圖片屬性展示的示意圖。

需要注意的是,本發(fā)明可在軟件和/或軟件與硬件的組合體中被實施,例如,本發(fā)明的各個裝置可采用專用集成電路(ASIC)或任何其他類似硬件設備來實現(xiàn)。在一個實施例中,本發(fā)明的軟件程序可以通過處理器執(zhí)行以實現(xiàn)上文所述步驟或功能。同樣地,本發(fā)明的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲到計算機可讀記錄介質(zhì)中,例如,RAM存儲器,磁或光驅(qū)動器或軟磁盤及類似設備。另外,本發(fā)明的一些步驟或功能可采用硬件來實現(xiàn),例如,作為與處理器配合從而執(zhí)行各個步驟或功能的電路。

對于本領(lǐng)域技術(shù)人員而言,顯然本發(fā)明不限于上述示范性實施例的細節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本發(fā)明。因此,無論從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本發(fā)明內(nèi)。不應將權(quán)利要求中的任何附圖標記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復數(shù)。系統(tǒng)權(quán)利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
炎陵县| 西华县| 河池市| 惠安县| 双辽市| 昌乐县| 佳木斯市| 南汇区| 教育| 上饶市| 盐亭县| 昭觉县| 绩溪县| 始兴县| 贡山| 巴里| 祁连县| 通州市| 宾川县| 安庆市| 吉隆县| 商水县| 三河市| 北流市| 洪雅县| 弥渡县| 肥东县| 文山县| 河源市| 三原县| 鱼台县| 阳山县| 南岸区| 潞西市| 图片| 瑞昌市| 新郑市| 洪江市| 平武县| 宣威市| 沙洋县|