1.一種內(nèi)存管理方法,包括:
獲取并解析內(nèi)存信息文件,以獲得系統(tǒng)中的各個(gè)進(jìn)程在多個(gè)時(shí)間點(diǎn)所對(duì)應(yīng)的進(jìn)程內(nèi)存映像;
根據(jù)所述進(jìn)程內(nèi)存映像確定各個(gè)進(jìn)程中的各個(gè)對(duì)象所占用的內(nèi)存塊的動(dòng)態(tài)變化情況;
根據(jù)所述動(dòng)態(tài)變化情況判斷各個(gè)對(duì)象所占用的內(nèi)存塊是否符合預(yù)設(shè)的回收條件,并在判斷結(jié)果為是時(shí),對(duì)符合所述回收條件的內(nèi)存塊進(jìn)行回收。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述根據(jù)所述動(dòng)態(tài)變化情況判斷各個(gè)對(duì)象所占用的內(nèi)存塊是否符合預(yù)設(shè)的回收條件具體包括:
確定各個(gè)進(jìn)程中包含的匿名對(duì)象,其中,所述匿名對(duì)象包括對(duì)象數(shù)據(jù)存儲(chǔ)于堆內(nèi)存中且對(duì)象名稱(chēng)未存儲(chǔ)于棧內(nèi)存中的對(duì)象;
判斷所述匿名對(duì)象所占用的內(nèi)存塊在預(yù)設(shè)時(shí)間內(nèi)是否發(fā)生變化,當(dāng)判斷結(jié)果為否時(shí),確定該匿名對(duì)象所占用的內(nèi)存塊符合所述回收條件。
3.根據(jù)權(quán)利要求1或2所述的方法,其中,進(jìn)一步包括:
根據(jù)所述進(jìn)程內(nèi)存映像,將各個(gè)進(jìn)程中的各個(gè)對(duì)象的內(nèi)存位置記錄在第一位圖中;
遍歷各個(gè)進(jìn)程所包含的全部對(duì)象,以獲取各個(gè)對(duì)象之間的引用關(guān)系,將被引用的對(duì)象的內(nèi)存位置記錄在第二位圖中;
判斷所述第一位圖中的各個(gè)對(duì)象是否包含在所述第二位圖中,對(duì)未包含在所述第二位圖中的對(duì)象所占用的內(nèi)存塊進(jìn)行回收。
4.根據(jù)權(quán)利要求1或2所述的方法,其中,進(jìn)一步包括:
根據(jù)所述動(dòng)態(tài)變化情況判斷對(duì)象的實(shí)際占用內(nèi)存塊大小與預(yù)留內(nèi)存塊大小之間的比值的增長(zhǎng)速度是否超過(guò)預(yù)設(shè)閾值,當(dāng)判斷結(jié)果為是時(shí),針對(duì)該對(duì)象所占用的內(nèi)存塊發(fā)出報(bào)警信息。
5.根據(jù)權(quán)利要求1所述的方法,其中,所述內(nèi)存信息文件為安卓系統(tǒng)提供的虛擬文件,或者,所述內(nèi)存信息文件為預(yù)先創(chuàng)建的系統(tǒng)內(nèi)存檢查文件。
6.一種內(nèi)存管理裝置,包括:
解析模塊,適于獲取并解析內(nèi)存信息文件,以獲得系統(tǒng)中的各個(gè)進(jìn)程在多個(gè)時(shí)間點(diǎn)所對(duì)應(yīng)的進(jìn)程內(nèi)存映像;
分析模塊,適于根據(jù)所述進(jìn)程內(nèi)存映像確定各個(gè)進(jìn)程中的各個(gè)對(duì)象所占用的內(nèi)存塊的動(dòng)態(tài)變化情況;
回收模塊,適于根據(jù)所述動(dòng)態(tài)變化情況判斷各個(gè)對(duì)象所占用的內(nèi)存塊是否符合預(yù)設(shè)的回收條件,并在判斷結(jié)果為是時(shí),對(duì)符合所述回收條件的內(nèi)存塊進(jìn)行回收。
7.根據(jù)權(quán)利要求6所述的裝置,其中,所述回收模塊具體用于:
確定各個(gè)進(jìn)程中包含的匿名對(duì)象,其中,所述匿名對(duì)象包括對(duì)象數(shù)據(jù)存儲(chǔ)于堆內(nèi)存中且對(duì)象名稱(chēng)未存儲(chǔ)于棧內(nèi)存中的對(duì)象;
判斷所述匿名對(duì)象所占用的內(nèi)存塊在預(yù)設(shè)時(shí)間內(nèi)是否發(fā)生變化,當(dāng)判斷結(jié)果為否時(shí),確定該匿名對(duì)象所占用的內(nèi)存塊符合所述回收條件。
8.根據(jù)權(quán)利要求6或7所述的裝置,其中,所述回收模塊進(jìn)一步用于:
根據(jù)所述進(jìn)程內(nèi)存映像,將各個(gè)進(jìn)程中的各個(gè)對(duì)象的內(nèi)存位置記錄在第一位圖中;
遍歷各個(gè)進(jìn)程所包含的全部對(duì)象,以獲取各個(gè)對(duì)象之間的引用關(guān)系,將被引用的對(duì)象的內(nèi)存位置記錄在第二位圖中;
判斷所述第一位圖中的各個(gè)對(duì)象是否包含在所述第二位圖中,對(duì)未包含在所述第二位圖中的對(duì)象所占用的內(nèi)存塊進(jìn)行回收。
9.根據(jù)權(quán)利要求6或7所述的裝置,其中,進(jìn)一步包括:
報(bào)警模塊,適于根據(jù)所述動(dòng)態(tài)變化情況判斷對(duì)象的實(shí)際占用內(nèi)存塊大小與預(yù)留內(nèi)存塊大小之間的比值的增長(zhǎng)速度是否超過(guò)預(yù)設(shè)閾值,當(dāng)判斷結(jié)果為是時(shí),針對(duì)該對(duì)象所占用的內(nèi)存塊發(fā)出報(bào)警信息。
10.根據(jù)權(quán)利要求6所述的裝置,其中,所述內(nèi)存信息文件為安卓系統(tǒng)提供的虛擬文件,或者,所述內(nèi)存信息文件為預(yù)先創(chuàng)建的系統(tǒng)內(nèi)存檢查文件。