
本發(fā)明涉及移動(dòng)終端中的內(nèi)存管理技術(shù)領(lǐng)域,特別是涉及圖片的內(nèi)存管理技術(shù)領(lǐng)域,具體為一種用于解決申請(qǐng)圖片內(nèi)存不足的內(nèi)存分配方法及系統(tǒng)。
背景技術(shù):在移動(dòng)終端系統(tǒng)中,不時(shí)會(huì)遇到內(nèi)存溢出(OOM,OutOfMemory)的問題,即內(nèi)存不夠。特別是,在使用大量圖片的時(shí)候,這個(gè)問題出現(xiàn)的幾率比較高,在出現(xiàn)這個(gè)問題之后,對(duì)應(yīng)的應(yīng)用程序往往會(huì)強(qiáng)制關(guān)閉,給用戶的使用帶來了極大的不便。出現(xiàn)這個(gè)問題的原因是,當(dāng)在申請(qǐng)為圖片分配內(nèi)存時(shí),會(huì)對(duì)需要申請(qǐng)的內(nèi)存空間進(jìn)行一個(gè)判斷,如果當(dāng)前堆已使用的大小加上申請(qǐng)需要再次分配的內(nèi)存大小超過了堆的最大內(nèi)存值,則會(huì)拋出OOM的異常。目前存在兩種解決方案:1、降低圖片的分辨率,來減小圖片可占用的內(nèi)存空間大小的方式來解決。降低圖片的分辨率,來減小圖片可占用的內(nèi)存空間大小的方法,是以犧牲圖片的分辨率為代價(jià)的,圖片顯示的效果變差,達(dá)不到預(yù)期的顯示效果;另外,如果圖片過多,總的圖片大小還是會(huì)很大,該問題還是不能完全解決。2、增大可申請(qǐng)的內(nèi)存空間的大小增大可申請(qǐng)的內(nèi)存空間大小的方法,則是提高了圖片可申請(qǐng)的空間,但是由于移動(dòng)終端普遍內(nèi)存空間有限,如果增大了圖片可申請(qǐng)的空間,則減小了程序其他可用空間的大小,從而在一定程度上降低了程序運(yùn)行的效率;同樣的,如果圖片過多,可申請(qǐng)的空間大小可能仍然不夠。從以上兩種解決技術(shù)方案來看,都沒有從根本上解決申請(qǐng)圖片內(nèi)存不足的問題。
技術(shù)實(shí)現(xiàn)要素:鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種用于解決申請(qǐng)圖片內(nèi)存不足的內(nèi)存分配方法及系統(tǒng),用于解決現(xiàn)有技術(shù)無法從根本上解決申請(qǐng)圖片內(nèi)存不足的問題。為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明在一方面提供一種用于解決申請(qǐng)圖片內(nèi)存不足的內(nèi)存分配方法,應(yīng)用于智能移動(dòng)終端的內(nèi)存管理中,所述方法包括:步驟S1,申請(qǐng)圖片資源;步驟S2,判斷該圖片資源是否存在,若是則退出本次內(nèi)存分配,若否則接著執(zhí)行步驟S3;步驟S3,判斷當(dāng)前圖片所在的圖層是否在用戶可視的圖層之內(nèi),若否則退出本次內(nèi)存分配,若是則接著執(zhí)行步驟S4;步驟S4,判斷智能移動(dòng)終端的內(nèi)存是否足夠?yàn)樯暾?qǐng)的圖片資源分配內(nèi)存,若是則執(zhí)行步驟S5,若否則接著執(zhí)行步驟S6;步驟S5,直接為申請(qǐng)的圖片資源分配內(nèi)存;步驟S6,判斷內(nèi)存堆中是否存在不在用戶可視圖層之內(nèi)的圖片資源,若否則停止為申請(qǐng)的圖片資源分配內(nèi)存,退出本次內(nèi)存分配,若是則執(zhí)行步驟S7;步驟S7,回收不在用戶可視圖層之內(nèi)的圖片資源的內(nèi)存;并返回繼續(xù)執(zhí)行步驟S4。作為本發(fā)明的一種優(yōu)選方案,在步驟S3中,若當(dāng)前圖片所在的圖層不在用戶可視的圖層之內(nèi),則不為當(dāng)前圖片分配內(nèi)存并退出本次內(nèi)存分配。作為本發(fā)明的一種優(yōu)選方案,在步驟S6中,若內(nèi)存堆中不存在不在用戶可視圖層之內(nèi)的圖片資源,則還包括步驟S8,警告當(dāng)前申請(qǐng)的圖片資源過大無法申請(qǐng)足夠的內(nèi)存。本發(fā)明在另外一方面提供一種用于解決申請(qǐng)圖片內(nèi)存不足的內(nèi)存分配系統(tǒng),應(yīng)用于智能移動(dòng)終端的內(nèi)存管理中,所述系統(tǒng)包括:內(nèi)存申請(qǐng)模塊,用于為圖片資源請(qǐng)求內(nèi)存;圖層管理模塊,用于記錄并管理各圖片所在的圖層,將各圖層從上到下排序并顯示最上層的圖層使得最上層的圖層可視;內(nèi)存管理模塊,與所述內(nèi)存申請(qǐng)模塊和所述圖層管理模塊相連,記錄智能移動(dòng)終端當(dāng)前已經(jīng)使用的內(nèi)存大小以及可以分配出去的內(nèi)存大小,響應(yīng)內(nèi)存申請(qǐng)模塊的請(qǐng)求,根據(jù)可以分配出去的內(nèi)存大小分配內(nèi)存,并在當(dāng)前內(nèi)存無法分配時(shí)回收不在用戶可視圖層之內(nèi)的圖片資源的內(nèi)存。作為本發(fā)明的一種優(yōu)選方案,所述內(nèi)存管理模塊具體包括:內(nèi)存記錄單元,記錄智能移動(dòng)終端當(dāng)前已經(jīng)使用的內(nèi)存大小以及可以分配出去的內(nèi)存大?。徽?qǐng)求響應(yīng)單元,與所述內(nèi)存申請(qǐng)模塊相連,響應(yīng)并分析圖片資源請(qǐng)求的內(nèi)存大??;圖層可視判斷單元,與所述圖層管理模塊相連,判斷當(dāng)前圖片所在的圖層是否在用戶可視的圖層之內(nèi);內(nèi)存大小判斷單元,與所述內(nèi)存記錄單元和所述請(qǐng)求響應(yīng)單元相連,判斷智能移動(dòng)終端的內(nèi)存是否足夠?yàn)樯暾?qǐng)的圖片資源分配內(nèi)存;堆內(nèi)可視圖層判斷單元,判斷內(nèi)存堆中是否存在不在用戶可視圖層之內(nèi)的圖片資源;內(nèi)存回收單元,與所述堆內(nèi)可視圖層判斷單元相連,在堆中存在不在用戶可視圖層之內(nèi)的圖片資源時(shí)回收不在用戶可視圖層之內(nèi)的圖片資源的內(nèi)存;內(nèi)存分配單元,與所述內(nèi)存大小判斷單元相連,在智能移動(dòng)終端的內(nèi)存足夠?yàn)樯暾?qǐng)的圖片資源分配內(nèi)存時(shí)為申請(qǐng)的圖片資源分配內(nèi)存。作為本發(fā)明的一種優(yōu)選方案,所述內(nèi)存管理模塊還包括智能移動(dòng)終端的內(nèi)存不能為申請(qǐng)的圖片資源分配內(nèi)存且內(nèi)存堆中不存在不在用戶可視圖層之內(nèi)的圖片資源時(shí)警告當(dāng)前申請(qǐng)的圖片資源過大無法申請(qǐng)足夠的內(nèi)存的警告單元。作為本發(fā)明的一種優(yōu)選方案,所述內(nèi)存管理模塊還包括圖片資源判斷單元,所述圖片資源判斷單元用于判斷請(qǐng)求的圖片資源是否存在,若存在則無需為申請(qǐng)的圖片資源分配內(nèi)存。作為本發(fā)明的一種優(yōu)選方案,在圖層可視判斷單元中,若當(dāng)前圖片所在的圖層不在用戶可視的圖層之內(nèi),則不為當(dāng)前圖片分配內(nèi)存。如上所述,本發(fā)明的一種用于解決申請(qǐng)圖片內(nèi)存不足的內(nèi)存分配方法及系統(tǒng),具有以下有益效果:1、本發(fā)明的技術(shù)方案不增加任何硬件設(shè)施,結(jié)合圖層管理和內(nèi)存管理,對(duì)資源的使用進(jìn)行總體協(xié)調(diào)處理,在內(nèi)存不足夠的時(shí)候,自動(dòng)回收當(dāng)前不需要的內(nèi)存,用于當(dāng)前需要的內(nèi)存分配,從而從根本上解決內(nèi)存不足的問題。2、在本發(fā)明中,當(dāng)前不需要顯示的圖片不申請(qǐng)資源,這樣可以有效節(jié)省內(nèi)存空間的使用大小。3、在本發(fā)明中,已經(jīng)存在的圖片不需要重新申請(qǐng)資源,這樣可以提高圖片的顯示效率,并節(jié)省了內(nèi)存空間。4、在本發(fā)明中,當(dāng)前不需要顯示的圖片資源在內(nèi)存不夠的情況下可以回收資源,這樣可以為當(dāng)前需要顯示的圖片增加可用空間大小。附圖說明圖1顯示為本發(fā)明的一種用于解決申請(qǐng)圖片內(nèi)存不足的內(nèi)存分配方法的流程示意圖。圖2顯示為本發(fā)明的一種用于解決申請(qǐng)圖片內(nèi)存不足的內(nèi)存分配系統(tǒng)的結(jié)構(gòu)示意圖。圖3顯示為本發(fā)明的一種用于解決申請(qǐng)圖片內(nèi)存不足的內(nèi)存分配系統(tǒng)的一種優(yōu)選的結(jié)構(gòu)示意圖。元件標(biāo)號(hào)說明1內(nèi)存分配系統(tǒng)11內(nèi)存申請(qǐng)模塊12圖層管理模塊13內(nèi)存管理模塊131內(nèi)存記錄單元132請(qǐng)求響應(yīng)單元133圖片資源判斷單元134圖層可視判斷單元135內(nèi)存大小判斷單元136堆內(nèi)可視圖層判斷單元137內(nèi)存回收單元138內(nèi)存分配單...