一種獲取實(shí)例占用內(nèi)存的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息技術(shù)領(lǐng)域,尤其涉及一種獲取實(shí)例占用內(nèi)存的方法及裝置。
【背景技術(shù)】
[0002]安卓(Android)的內(nèi)存占用分析通常是通過Memory Analyzer完成,采用MemoryAnalyzer僅能分析實(shí)例所屬于的實(shí)現(xiàn)類。例如,窗口 A、窗口 B為不同界面類Class cl和Class c2的實(shí)例,其中,Class cl和Class c2都繼承于window類。測(cè)試方希望查看界面的內(nèi)存占用情況,采用Memory Analyzer通過Class cl或者Class c2 一個(gè)一個(gè)進(jìn)行查找其包括的實(shí)例占用的內(nèi)存。
[0003]然而,采用現(xiàn)有技術(shù)查看實(shí)例占用的內(nèi)存時(shí),無(wú)法一次性將實(shí)現(xiàn)類包括的窗口都找出來(lái),導(dǎo)致浪費(fèi)人力以及時(shí)間。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的實(shí)施例提供一種獲取實(shí)例占用內(nèi)存的方法及裝置,可以通過繼承關(guān)系一次性查找出符合條件的所有實(shí)例占用的內(nèi)存。
[0005]第一方面,本發(fā)明實(shí)施例提供一種獲取實(shí)例占用內(nèi)存的方法,包括:
[0006]獲取實(shí)例的實(shí)現(xiàn)類信息,所述實(shí)現(xiàn)類信息中包括實(shí)現(xiàn)類名稱;
[0007]當(dāng)所述實(shí)現(xiàn)類信息中包括的所述實(shí)現(xiàn)類名稱與用戶輸入的過濾條件不匹配時(shí),獲取所述實(shí)現(xiàn)類的父類信息,所述父類信息中包括父類名稱;
[0008]當(dāng)所述實(shí)現(xiàn)類的父類信息中的所述父類名稱與所述過濾條件匹配時(shí),將所述實(shí)例以及所述實(shí)例對(duì)應(yīng)的占用內(nèi)存信息保存到展示列表以便展示。
[0009]第二方面,本發(fā)明實(shí)施例提供一種獲取實(shí)例占用內(nèi)存的裝置,包括:
[0010]獲取單元,用于獲取實(shí)例的實(shí)現(xiàn)類信息,所述實(shí)現(xiàn)類信息中包括實(shí)現(xiàn)類名稱;
[0011]所述獲取單元,還用于當(dāng)所述實(shí)現(xiàn)類信息中包括的所述實(shí)現(xiàn)類名稱與用戶輸入的過濾條件不匹配時(shí),獲取所述實(shí)現(xiàn)類的父類信息,所述父類信息中包括父類名稱;
[0012]保存單元,用于當(dāng)所述實(shí)現(xiàn)類的父類信息中的所述父類名稱與所述過濾條件匹配時(shí),將所述實(shí)例以及所述實(shí)例對(duì)應(yīng)的占用內(nèi)存信息保存到展示列表以便展示。
[0013]本發(fā)明實(shí)施例提供一種獲取實(shí)例占用內(nèi)存的方法及裝置,通過獲取實(shí)例的實(shí)現(xiàn)類信息,所述實(shí)現(xiàn)類信息中包括實(shí)現(xiàn)類名稱;當(dāng)所述實(shí)現(xiàn)類信息中包括的所述實(shí)現(xiàn)類名稱與用戶輸入的過濾條件不匹配時(shí),獲取所述實(shí)現(xiàn)類的父類信息,所述父類信息中包括父類名稱;當(dāng)所述實(shí)現(xiàn)類的父類信息中的所述父類名稱與所述過濾條件匹配時(shí),將所述實(shí)例以及所述實(shí)例對(duì)應(yīng)的占用內(nèi)存信息保存到展示列表以便展示,與采用現(xiàn)有技術(shù)查看實(shí)例占用內(nèi)存時(shí)無(wú)法一次性將實(shí)現(xiàn)類包括的窗口都找出來(lái),導(dǎo)致浪費(fèi)人力以及時(shí)間相比,本發(fā)明實(shí)施例可以通過繼承關(guān)系一次性查找出符合條件的所有實(shí)例占用的內(nèi)存。
【附圖說(shuō)明】
[0014]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0015]圖1為本發(fā)明一個(gè)實(shí)施例提供的一種獲取實(shí)例占用內(nèi)存的方法的流程圖;
[0016]圖2為本發(fā)明另一個(gè)實(shí)施例提供的一種獲取實(shí)例占用內(nèi)存的方法的流程圖;
[0017]圖3A為本發(fā)明另一個(gè)實(shí)施例提供的采用現(xiàn)有技術(shù)獲取實(shí)例占用內(nèi)存的結(jié)果示意圖;
[0018]圖3B為本發(fā)明另一個(gè)實(shí)施例提供的采用本發(fā)明獲取實(shí)例占用內(nèi)存的結(jié)果示意圖;
[0019]圖4為本發(fā)明一個(gè)實(shí)施例提供的一種獲取實(shí)例占用內(nèi)存的裝置的框圖;
[0020]圖5為本發(fā)明一個(gè)實(shí)施例提供的一種獲取實(shí)例占用內(nèi)存的裝置的框圖。
【具體實(shí)施方式】
[0021]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0022]本發(fā)明實(shí)施例提供一種獲取實(shí)例占用內(nèi)存的方法,該方法的執(zhí)行主體可以為終端,例如智能手機(jī)、平板電腦、筆記本電腦等終端。如圖1所示,該方法包括:
[0023]步驟101,獲取實(shí)例的實(shí)現(xiàn)類信息,所述實(shí)現(xiàn)類信息中包括實(shí)現(xiàn)類名稱。
[0024]實(shí)例指基于某個(gè)類的對(duì)象實(shí)現(xiàn),某個(gè)類的對(duì)象實(shí)現(xiàn)過程可以稱為實(shí)例化。例如,Class A (參數(shù)1、參數(shù)2),實(shí)例指參數(shù)1、參數(shù)2,這兩個(gè)實(shí)例的實(shí)現(xiàn)類為Class A。
[0025]可選的,獲取的實(shí)例的實(shí)現(xiàn)類信息中還包括實(shí)現(xiàn)類的接口,所述實(shí)現(xiàn)類的接口用于調(diào)用實(shí)現(xiàn)類的方法實(shí)現(xiàn)實(shí)例。
[0026]步驟102,當(dāng)所述實(shí)現(xiàn)類信息中包括的所述實(shí)現(xiàn)類名稱與用戶輸入的過濾條件不匹配時(shí),獲取所述實(shí)現(xiàn)類的父類信息,所述父類信息中包括父類名稱。
[0027]可選的,當(dāng)所述實(shí)現(xiàn)類信息中包括的所述實(shí)現(xiàn)類名稱與用戶輸入的過濾條件匹配時(shí),則可以直接將實(shí)例以及實(shí)例對(duì)應(yīng)的占用內(nèi)存信息保存在展示列表中,展示列表中保存的各個(gè)記錄為符合用戶輸入的過濾條件的實(shí)例以及實(shí)例對(duì)應(yīng)的占用內(nèi)存信息。
[0028]其中,實(shí)例對(duì)應(yīng)的占用內(nèi)存信息通常米用Shallow Heap和Retained Heap進(jìn)行描述,其中,Shallow Heap表示實(shí)例自身占用的內(nèi)存,其中不包括其引用的對(duì)象,RetainedHeap表示當(dāng)前實(shí)例自身占用的內(nèi)存以及當(dāng)前實(shí)例可直接或者間接引用到的實(shí)例所占內(nèi)存的總和。
[0029]可選的,當(dāng)實(shí)現(xiàn)類存在父類時(shí),則此實(shí)現(xiàn)類可以稱為父類的子類,子類繼承父類,子類的構(gòu)造方法調(diào)用父類的構(gòu)造方法。父類可以包括多個(gè)子類,即此多個(gè)子類可以調(diào)用父類的構(gòu)造方法。
[0030]步驟103,當(dāng)所述實(shí)現(xiàn)類的父類信息中的所述父類名稱與所述過濾條件匹配時(shí),將所述實(shí)例以及所述實(shí)例對(duì)應(yīng)的占用內(nèi)存信息保存到展示列表以便展示。
[0031]本發(fā)明實(shí)施例提供一種獲取實(shí)例占用內(nèi)存的方法,通過獲取實(shí)例的實(shí)現(xiàn)類信息,所述實(shí)現(xiàn)類信息中包括實(shí)現(xiàn)類名稱;當(dāng)所述實(shí)現(xiàn)類信息中包括的所述實(shí)現(xiàn)類名稱與用戶輸入的過濾條件不匹配時(shí),獲取所述實(shí)現(xiàn)類的父類信息,所述父類信息中包括父類名稱;當(dāng)所述實(shí)現(xiàn)類的父類信息中的所述父類名稱與所述過濾條件匹配時(shí),將所述實(shí)例以及所述實(shí)例對(duì)應(yīng)的占用內(nèi)存信息保存到展示列表以便展示,與采用現(xiàn)有技術(shù)查看實(shí)例占用內(nèi)存時(shí)無(wú)法一次性將實(shí)現(xiàn)類包括的窗口都找出來(lái),導(dǎo)致浪費(fèi)人力以及時(shí)間相比,本發(fā)明實(shí)施例可以通過繼承關(guān)系一次性查找出符合條件的所有實(shí)例占用的內(nèi)存,節(jié)省人力以及時(shí)間。
[0032]本發(fā)明實(shí)施例提供另一種獲取實(shí)例占用內(nèi)存的方法,如圖2所示,該方法包括:
[0033]步驟201,獲取內(nèi)存快照中所有實(shí)例構(gòu)成的實(shí)例列表。
[0034]可選的,通過mat.api獲取安卓(Android)內(nèi)存快照中的實(shí)例列表,其中,實(shí)例列表中包括安卓?jī)?nèi)存中包括的所有實(shí)例。其中,api為應(yīng)用程序編程接口(Applicat1nProgramming Interface)。例如,接收到用戶發(fā)送的指令后,通過mat.api獲取安卓?jī)?nèi)存快照中的實(shí)例列表。
[0035]步驟202,遍歷所述實(shí)例列表,獲取第一個(gè)實(shí)例。
[0036]可選的,進(jìn)行后續(xù)處理時(shí),依次處理各個(gè)實(shí)例,即查看一個(gè)實(shí)例所占內(nèi)存完成之后,再按照實(shí)例列表的順序查看下一個(gè)實(shí)例所占內(nèi)存,直到實(shí)例列表中所有實(shí)例查看完成。
[0037]步驟203,獲取實(shí)例的實(shí)現(xiàn)類信息,所述實(shí)現(xiàn)類信息中包括實(shí)現(xiàn)類名稱。