專利名稱:一種移動設備內(nèi)存管理方法及裝置的制作方法
技術領域:
本發(fā)明涉及內(nèi)存管理,尤其涉及一種移動設備內(nèi)存管理系統(tǒng)及方法。
背景技術:
隨著3G和智能機時代的來臨,手機等移動設備上的應用程序越來越多,這類手機等移動設備采用多任務的操作系統(tǒng),可以同時運行著多個任務。為了提高多任務的用戶體驗,手機等移動設備配備了大容量內(nèi)存。但是,內(nèi)存容量的增加受到成本、功耗、體積等的限制。因此,如何在多任務情況下降低內(nèi)存使用量成為亟待解決的問題。內(nèi)存交換是在PC機和服務器上廣泛使用的一種用來降低內(nèi)存使用量的方法。它的基本原理是當系統(tǒng)內(nèi)存不足時,把內(nèi)存中的一些內(nèi)容交換到外存中,從而騰出內(nèi)存空間;當系統(tǒng)運行到需要被交換到外存的內(nèi)容時,就把交換到外存中的內(nèi)容再次交換到內(nèi)存中;在這個過程中如果發(fā)生內(nèi)存不足,就會涉及到另一次交換過程。這樣,系統(tǒng)的有效內(nèi)存空間大小就是實際內(nèi)存大小加上外存上可以用來存放交換內(nèi)容的空間之和。通過內(nèi)外存交換,可以實現(xiàn)用較少的內(nèi)存達到更大內(nèi)存的效果。目前,PC機和服務器上的內(nèi)存交換方法基本上是作為操作系統(tǒng)的一個基本功能(即虛擬存儲器管理)模塊在操作系統(tǒng)的內(nèi)核中實現(xiàn),其使用LRU (Lease Recently he,最近最少使用)算法,將最近最長時間不使用的優(yōu)先交換出去,并以內(nèi)存頁為最小單位進行交換。內(nèi)存頁是操作系統(tǒng)管理內(nèi)存的基本單位,32位的Linux操作系統(tǒng)的一個內(nèi)存頁大小一般為4KB。然而,PC機和服務器上使用的內(nèi)存交換方式存在以下問題1)當把最近最長時間不使用的內(nèi)存頁交換出去時,有可能發(fā)生當前要運行的應用程序就要使用剛被交換出去的內(nèi)存頁,于是這部分被交換出去的內(nèi)存頁中的內(nèi)容又馬上要交換到內(nèi)存中來;2)為了提高內(nèi)存使用率,操作系統(tǒng)每次會選擇盡可能少交換內(nèi)存頁,于是當前要運行的應用程序在正常運行過程中可能又會發(fā)生內(nèi)存不足的情況,于是系統(tǒng)又會進行內(nèi)存交換,以便讓應用程序能夠正常運行下去。這兩個問題導致無效的內(nèi)存交換和內(nèi)存交換過于頻繁,而且,在進行內(nèi)存交換時, 系統(tǒng)不能執(zhí)行任何其它的操作。因此,過多和頻繁的內(nèi)存交換就會使應用程序運行變慢,運行不流暢,運行過程中時不時出現(xiàn)短促的停頓,這會極大降低用戶體驗。PC機和服務器由于 CPU性能強勁,這種運行變慢和運行不流暢對用戶體驗的影響相對輕微,而手機等移動設備的CPU性能相對較弱,運行變慢和運行不流暢對用戶體驗的影響就會很明顯,從而導致用戶體驗變得很差。正是由于這個原因,在手機等移動設備上都沒有使用內(nèi)存交換來降低內(nèi)存使用量。
發(fā)明內(nèi)容
本發(fā)明要解決的主要技術問題是,提供一種移動設備中內(nèi)存管理的方法及裝置, 在通過內(nèi)存交換降低內(nèi)存使用量的同時,盡量做到不影響用戶體驗。
根據(jù)本發(fā)明的一種實施方式,提供一種移動設備內(nèi)存管理方法,包括查找與指定應用程序無依賴關系且符合預定算法的至少一個應用程序作為待交換的應用程序;根據(jù)所述待交換的應用程序執(zhí)行內(nèi)存交換處理。進一步地,所述查找與指定應用程序無依賴關系且符合預定算法的至少一個應用程序作為待交換的應用程序這一步驟包括從正運行的應用程序中查找符合預定算法的應用程序;從查找到的符合預定算法的應用程序中查找與指定應用程序無依賴關系的應用程序,將其作為待交換的應用程序。一種實施例中,根據(jù)所述待交換的應用程序執(zhí)行內(nèi)存交換處理這一步驟包括選中一個所述待交換的應用程序,將該選中的應用程序所對應的進程所屬的內(nèi)存頁交換到外存中;判斷該應用程序所占的內(nèi)存量與系統(tǒng)當前的可用內(nèi)存量之和是否大于等于第一預設閾值;如果不是,則繼續(xù)執(zhí)行選中一個所述待交換的應用程序這一步驟。另一種實施例中,根據(jù)待交換的應用程序執(zhí)行內(nèi)存交換處理這一步驟包括選中一個所述待交換的應用程序,標記該選中的應用程序;判斷該標記的應用程序所占的內(nèi)存量與系統(tǒng)當前的可用內(nèi)存量之和是否大于等于第一預設閾值;如果不是,則繼續(xù)執(zhí)行選中一個所述待交換的應用程序這一步驟;如果是,則將所有標記的應用程序各自對應的進程所屬的內(nèi)存頁交換到外存中。又一種實施例中,根據(jù)待交換的應用程序執(zhí)行內(nèi)存交換處理這一步驟包括將所述待交換的應用程序所對應的進程所屬的內(nèi)存頁交換到外存中。優(yōu)選地,所述查找與指定應用程序無依賴關系且符合預定算法的至少一個應用程序作為待交換的應用程序這一步驟之前還包括判斷系統(tǒng)當前的可用內(nèi)存量是否大于等于第二預設閾值;若小于所述第二預設閾值,則執(zhí)行所述查找與指定應用程序無依賴關系且符合預定算法的應用程序作為待交換的應用程序步驟;否則不作處理。優(yōu)選地,所述符合預定算法的應用程序包括最近最少使用CPU的應用程序。優(yōu)選地,根據(jù)待交換的應用程序執(zhí)行內(nèi)存交換管理處理這一步驟之后還包括執(zhí)行正常的應用程序啟動流程啟動所述指定應用程序;當所述指定應用程序為系統(tǒng)當前正待啟動的新的應用程序時,所述根據(jù)待交換的應用程序執(zhí)行內(nèi)存交換管理處理這一步驟之后還包括執(zhí)行正常的應用程序啟動流程啟動所述新的應用程序。根據(jù)本發(fā)明的另一種實施方式,提供一種移動設備內(nèi)存管理裝置,包括應用管理與控制模塊,用于查找與指定應用程序無依賴關系且符合預定算法的至少一個應用程序作為待交換的應用程序;內(nèi)存交換模塊,用于根據(jù)所述應用管理與控制模塊的指示,將所述待交換的應用程序所對應的進程所屬的內(nèi)存頁交換到外存中。進一步地,所述符合預定算法的應用程序包括最近最少使用CPU的應用程序。本發(fā)明的有益效果在于在進行內(nèi)存交換時既考慮了按預定算法查找待交換的應用程序,又考慮到應用程序間的依賴性,從而消除了無效的內(nèi)存交換,提高了用戶使用設備的體驗感。一種實施例中還考慮了一次交換出去的內(nèi)存頁數(shù)量與系統(tǒng)當前最大內(nèi)存使用量的關系,從而解決了內(nèi)存交換過于頻繁問題,降低內(nèi)存交換頻率;又一種實施例中考慮在啟動程序前完成內(nèi)存交換,保證在應用程序運行過程中沒有內(nèi)存交換,從而消除內(nèi)存交換對應用程序運行過程的影響。
圖1是本發(fā)明實施例提供的移動設備內(nèi)存管理裝置的結構示意圖;圖2是本發(fā)明實施例一移動設備內(nèi)存管理方法的流程示意圖;圖3是本發(fā)明實施例二移動設備內(nèi)存管理方法的流程示意圖;圖4是本發(fā)明實施例三移動設備內(nèi)存管理方法的流程示意圖;圖5是本發(fā)明實施例四移動設備內(nèi)存管理方法的流程示意圖;圖6是本發(fā)明實施例五移動設備內(nèi)存管理方法的流程示意圖;圖7是本發(fā)明實施例六移動設備內(nèi)存管理方法的流程示意圖;圖8是本發(fā)明一種實施例應用于Android手機中的內(nèi)存管理裝置的結構示意圖;圖9是與圖8相對應的Android手機中內(nèi)存管理方法的流程示意圖。
具體實施例方式下面通過具體實施方式
結合附圖對本發(fā)明作進一步詳細說明。本發(fā)明實施例的設計思想是1)選擇要交換出去的內(nèi)存頁時,既考慮使用預定算法來選擇應用程序,也考慮當前要運行的應用程序是否可能使用,只有同時滿足這兩個條件的內(nèi)存頁才被選擇交換出去;2) —次交換出去的內(nèi)存頁數(shù)量要滿足當前要運行的應用程序可能的最大內(nèi)存使用量;3)內(nèi)存交換在啟動當前要運行的應用程序之前完成。其中, 思想點1)消除了無效的內(nèi)存交換,思想點2)降低了內(nèi)存交換頻率到只有1次,思想點3) 保證在應用程序運行過程中沒有內(nèi)存交換,從而消除內(nèi)存交換對應用程序運行過程的打擾。一種實施例中將這三點結合起來,就可以既能夠使用內(nèi)存交換來降低內(nèi)存使用量,又不會降低應用程序運行的速度和流暢性,消除了傳統(tǒng)內(nèi)存交換技術在移動設備如手機上的缺點ο如圖1所示,本發(fā)明一種實施例提供的移動設備中內(nèi)存管理裝置包括應用管理與控制模塊和內(nèi)存交換模塊。其中,應用管理與控制模塊,用于查找與指定應用程序無依賴關系且符合預定算法的至少一個應用程序作為待交換的應用程序;所述內(nèi)存交換模塊,用于根據(jù)所述應用管理與控制模塊的指示,將所述待交換的應用程序所對應的進程所屬的內(nèi)存頁交換到外存中。一種實施例中,內(nèi)存是RAM,外存是FLASH。本發(fā)明實施方式提供了基于上述內(nèi)存管理裝置的內(nèi)存管理方法,包括查找與指定應用程序無依賴關系且符合預定算法的至少一個應用程序作為待交換的應用程序;根據(jù)所述待交換的應用程序執(zhí)行內(nèi)存交換處理。一種實施例中,預定算法采用類似最近最少使用頁面置換算法(LRU)的算法,即最近最少使用CPU算法(為方便描述,下文將最近最少使用CPU的算法也稱為LRU算法), 也就是說,在該實施例中,符合預定算法的應用程序為最近最少使用CPU的應用程序;其他實施例中還可以使用其他算法,本發(fā)明不限于LRU這種算法。一種實施例中,所述查找與指定應用程序無依賴關系且符合預定算法的至少一個應用程序作為待交換的應用程序這一步驟包括從正運行的應用程序中查找符合預定算法的應用程序;從查找到的符合預定算法的應用程序中查找與指定應用程序無依賴關系的應用程序,將其作為待交換的應用程序。對于該步驟,一種示例性做法是查找符合預定算法的一個應用程序;判斷該查找到的應用程序與指定應用程序之間是否存在依賴關系;若存在依賴關系,則重新查找下一個符合預定算法的應用程序。對于根據(jù)所述待交換的應用程序執(zhí)行內(nèi)存交換處理這一步驟一種實施例中,該步驟包括將所述待交換的應用程序所對應的進程所屬的內(nèi)存頁交換到外存中。另一種實施例中該步驟包括選中一個所述待交換的應用程序,將該選中的應用程序所對應的進程所屬的內(nèi)存頁交換到外存中;判斷該應用程序所占的內(nèi)存量與系統(tǒng)當前的可用內(nèi)存量之和是否大于等于第一預設閾值;如果不是,則繼續(xù)執(zhí)行選中一個所述待交換的應用程序這一步驟。出于執(zhí)行效率上的考慮,可將該實施例進行優(yōu)化,即該步驟包括 選中一個所述待交換的應用程序,標記該選中的應用程序;判斷該標記的應用程序所占的內(nèi)存量與系統(tǒng)當前的可用內(nèi)存量之和是否大于等于第一預設閾值;如果不是,則繼續(xù)執(zhí)行選中一個所述待交換的應用程序這一步驟;如果是,則將所有標記的應用程序各自對應的進程所屬的內(nèi)存頁交換到外存中。這里,第一預設閾值為實驗值,實施例中第一預設閾值是能滿足移動設備中任意一個應用程序運行時需要的內(nèi)存量。一種實施例中,所述查找與指定應用程序無依賴關系且符合預定算法的至少一個應用程序作為待交換的應用程序這一步驟之前還包括判斷系統(tǒng)當前的可用內(nèi)存量是否大于等于第二預設閾值;若小于第二預設閾值,則執(zhí)行所述查找與指定應用程序無依賴關系且符合預定算法的應用程序作為待交換的應用程序步驟;否則不作處理。這里,第二預設閾值為實驗值,實施例中第二預設閾值是能滿足移動設備中任意一個應用程序運行時需要的內(nèi)存量。一種實施例中,根據(jù)待交換的應用程序執(zhí)行內(nèi)存交換管理處理這一步驟之后還包括執(zhí)行正常的應用程序啟動流程啟動所述指定應用程序;當所述指定應用程序為系統(tǒng)當前正待啟動的新的應用程序時,所述根據(jù)待交換的應用程序執(zhí)行內(nèi)存交換管理處理這一步驟之后還包括執(zhí)行正常的應用程序啟動流程啟動所述新的應用程序。以下通過幾個實施例并結合圖2-9詳細說明根據(jù)本發(fā)明實施方式提供的移動設備內(nèi)存管理方法。為便于描述,以下各實施例中統(tǒng)一采用的預定算法為前述LRU算法,即最近最少使用CPU;應理解,本發(fā)明實施例還可以使用其他算法,并不限于LRU算法。實施例一如圖2所示,本實施例包含如下步驟步驟S201 按預定算法查找APP ;采用LRU算法查找應用程序APP,即在當前運行應用程序列表中查找最近最少使用CPU的應用程序;可以理解,正在運行的應用程序并不一定是正占用CPU的應用程序,而是操作系統(tǒng)為這個應用程序創(chuàng)建了進程的應用程序。步驟S202 判斷指定應用程序是否依賴于所查找的應用程序APP的組件,這里,指定應用程序是指當前運行應用程序列表中除應用程序APP外的其他應用程序。若指定應用程序與應用程序APP存在依賴關系,則排除應用程序APP,轉(zhuǎn)步驟 S201,查找下一個最近最少使用CPU的應用程序;可以理解,排除應用程序APP是指不考慮將應用程序APP對應的進程所屬的內(nèi)存頁作為可以交換出去的內(nèi)存頁。若預定的應用程序與應用程序APP不存在依賴關系,則轉(zhuǎn)步驟S203。步驟S203 進行內(nèi)存交換,具體而言,把查找到的最近最少使用CPU的應用程序APP所對應的進程所屬的內(nèi)存頁作為可以交換出去的內(nèi)存頁,將其交換到外存中。步驟S204 內(nèi)存交換流程結束。本實施例既考慮LRU算法的優(yōu)勢又考慮應用程序之間組件的依賴關系,只有同時滿足這兩個條件的內(nèi)存頁才被選擇交換出去,從而消除了無效的內(nèi)存交換。實施例二如圖3所示,本實施例包含如下步驟步驟S301 與實施例一的步驟S201相同,即,在當前運行應用程序列表中查找最近最少使用CPU的應用程序APP。步驟S302 判斷指定應用程序是否依賴于應用程序APP的組件,同樣地,這里的指定應用程序是當前運行應用程序列表中除應用程序APP外的應用程序。若存在依賴關系, 則排除應用程序APP,轉(zhuǎn)步驟S301,查找下一個最近最少使用CPU的應用程序;若不存在依賴,則轉(zhuǎn)步驟S303 ;步驟S303 將步驟S302中得到的符合預定算法且不存在依賴關系的應用程序所對應的進程所屬的所有內(nèi)存頁作為可以交換出去的內(nèi)存頁,通知內(nèi)存管理模塊把這些內(nèi)存頁交換到外存中;步驟S304 把系統(tǒng)當前的可用內(nèi)存量加上步驟S303中交換出去的內(nèi)存量,判斷二者之和是否大于等于第一預設閾值。這里,第一預設閾值含義如前述,在此不再贅述若二者之和大于等于預設閾值,轉(zhuǎn)步驟S305 ;否則轉(zhuǎn)步驟S301,查找下一個最近最少使用CPU的應用程序;步驟S305 內(nèi)存交換流程結束。本實施例不僅既考慮LRU算法的優(yōu)勢又考慮應用程序之間組件的依賴性關系,還考慮了進行一次內(nèi)存交換的內(nèi)存量要滿足可能使用的最大內(nèi)存量,只有同時滿足這三個條件的內(nèi)存頁才被選擇交換出去,從而既消除了無效的內(nèi)存交換,又降低了交換頻率至只有一次內(nèi)存交換。實施例三如圖4所示,本實施例包括如下步驟步驟S401 與實施例一的步驟S201相同,即,在當前運行應用程序列表中查找最近最少使用CPU的應用程序APP。步驟S402 判斷指定應用程序是否依賴于應用程序APP的組件,同樣地,這里的指定應用程序是當前運行應用程序列表中除應用程序APP外的應用程序。若存在依賴關系, 則排除應用程序APP,轉(zhuǎn)步驟S401,查找下一個最近最少使用CPU的應用程序;若不存在依賴,則轉(zhuǎn)步驟S403 ;步驟S403 標記步驟S402中得到的符合預定算法且不存在依賴關系的應用程序 APP步驟S404 把系統(tǒng)當前的可用內(nèi)存量加上步驟S403中標記的應用程序所占的內(nèi)存量,判斷二者之和是否大于等于第一預設閾值。這里,第一預設閾值為實驗值,實施例中第一預設閾值是能滿足移動設備中任意一個應用程序運行時需要的內(nèi)存量。若二者之和大于等于預設閾值,轉(zhuǎn)步驟S405 ;否則轉(zhuǎn)步驟S401,查找下一個最近最少使用CPU的應用程序;
步驟S405 將所有標記的應用程序各自所對應的進程所屬的所有內(nèi)存頁作為可以交換出去的內(nèi)存頁,通知內(nèi)存管理模塊把這些內(nèi)存頁交換到外存中;步驟S406 內(nèi)存交換流程結束??梢钥闯?,本實施例實際上是對實施例二在執(zhí)行方面的優(yōu)化,通過循環(huán)找出所有需要交換出去的應用程序后,然后集中一次把這些進程所屬的內(nèi)存頁交換到外存中,從而優(yōu)化了執(zhí)行的效率。實施例四如圖5所示,本實施例包括如下步驟步驟S501 首先判斷系統(tǒng)當前的內(nèi)存可用量是否大于第二預設閾值,若是,轉(zhuǎn)步驟S505 ;若否,則轉(zhuǎn)步驟S502 ;這里,第二預設閾值含義如前述,在此不再贅述步驟S502、S503、S504、S505 分別與實施例一中的步驟 S201、S202、S203、S204 相同,在此不再贅述。本實施例在進行內(nèi)存交換前,首先考慮系統(tǒng)當前內(nèi)存可用量,然后再進行如實施例一的內(nèi)存交換方法,進一步消除了無效的內(nèi)存交換。實施例五如圖6所示,本實施例包括如下步驟步驟S601 首先判斷系統(tǒng)當前的內(nèi)存可用量是否大于預設閾值,若是,轉(zhuǎn)步驟 S606 ;若否,則轉(zhuǎn)步驟S602 ;步驟S602、S603、S604、S605、S606 分別與實施例二中的步驟 S301、S302、S303、 S304、S305相同,在此不再贅述。本實施例在進行內(nèi)存交換前,首先考慮系統(tǒng)當前內(nèi)存可用量,然后再進行如實施例二的內(nèi)存交換方法,進一步消除了無效的內(nèi)存交換。實施例六如圖7所示,包括如下步驟步驟S701 首先判斷系統(tǒng)當前的內(nèi)存可用量是否大于預設閾值,若是,轉(zhuǎn)步驟 S606 ;若否,則轉(zhuǎn)步驟S602 ;步驟S702至S707分別與實施例三的步驟S401至S406相同,在此不再贅述。本實施例在進行內(nèi)存交換前,首先考慮系統(tǒng)當前內(nèi)存可用量,然后再進行如實施例三的內(nèi)存交換方法,進一步消除了無效的內(nèi)存交換。上述各個實施例的內(nèi)存交換方法可應用在啟動指定應用程序前,即在啟動指定應用程序前,執(zhí)行如上述各個實施例的內(nèi)存交換流程,等內(nèi)存交換完畢后在執(zhí)行該指定應用程序;特別地,當該指定應用程序為系統(tǒng)當前待啟動的新的應用程序時,在啟動該新的應用程序前,執(zhí)行如上述各個實施例的內(nèi)存交換流程,等內(nèi)存交換完畢后在執(zhí)行該新的應用程序。這種方式不僅消除了無效的內(nèi)存交換,還保證在應用程序運行過程中沒有內(nèi)存交換,從而消除了內(nèi)存交換對應用程序運行過程的打擾。根據(jù)上述各實施例可以理解,在本發(fā)明實施例提供的移動設備內(nèi)存管理裝置中, 內(nèi)存交換模塊負責完成把指定的內(nèi)存頁的內(nèi)容交換到外存中,以及把交換在外存中的內(nèi)存頁的內(nèi)容在需要使用時(也就是CPU要讀寫這些內(nèi)存頁所屬地址的內(nèi)容時)自動讀入到指定的內(nèi)存頁中;而應用管理與控制模塊負責選擇要交換出去的內(nèi)存頁和決定把內(nèi)存頁交換出去的時機,需要注意的是,實施例中應用管理與控制模塊只是控制交換出去,而把交換出去的內(nèi)容交換進來則是由內(nèi)存交換模塊自動完成的(該功能是由操作系統(tǒng)內(nèi)核的缺頁中斷來完成的,本領域技術人員可通過現(xiàn)有技術實現(xiàn))。可以理解,本發(fā)明中的這種模塊劃分是為了描述方便而引入的一種邏輯上的概念,具體實現(xiàn)時,既可以一個模塊對應一個獨立的軟件模塊實體(如函數(shù)、類、進程、線程等),也可以多個模塊對應一個軟件模塊實體,或者一個模塊對應多個軟件模塊實體。下面以Android手機為例來進一步說明本發(fā)明一種實施例提供的移動設備內(nèi)存管理方法?,F(xiàn)有技術中,Android手機采用了 Linux操作系統(tǒng)技術和Java技術,這使得 Android手機的運行對內(nèi)存大小非常敏感。當內(nèi)存比較小時,Android手機運行會非常緩慢。為此,Android手機基本上都配備了大容量的內(nèi)存。如圖8所示,應用管理和控制模塊由ActivityManagei^ervice和 PackageManageService這兩個類組成,而內(nèi)存交換模塊由Linux操作系統(tǒng)內(nèi)核中的虛擬存儲管理代碼模塊組成。另外,應用控制與管理模塊和內(nèi)存交換模塊之間的通信采用虛擬設備驅(qū)動程序——MMUDriver來完成。如圖9所示,本例包含如下步驟步驟S901 =ActivityManagerService打開MMUDriver驅(qū)動,準備進行內(nèi)存交換處理。步驟S902 ActivityManagerService檢查系統(tǒng)當前可用的內(nèi)存量是否大于等于預設閾值,如果是,轉(zhuǎn)步驟S909,如果否,則轉(zhuǎn)步驟S903。這里,預設閾值通過試驗來確定, 原則上是能夠滿足手機上任意一個應用運行時需要的內(nèi)存量;步驟S903 =ActivityManagerService從正在運行的應用程序列表中找出最近最長時間沒有使用CPU的應用程序;步驟S904 :ActivityManagerService通過PackageManagerService檢查當前待啟動的應用程序的描述信息,看其所要依賴的外部應用程序組件,可通過^tent方式描述, 把這些信息進一步轉(zhuǎn)換成要依賴的應用程序名稱;步驟S905 =ActivityManagerService查詢正在運行的應用程序列表,將該表按最近最長時間沒有使用CPU的原則進行排序(稱為LRU表),從LRU表中選出第一個不在步驟S904中的應用程序(也就是說,該應用程序最近最長時間沒有使用CPU且其組件不被依賴),作為要交換出去的應用程序;步驟S906 =ActivityManagerService把步驟S905中選出的應用程序所對應的進程號以寫MMUDriver驅(qū)動的方式發(fā)給MMUDriver驅(qū)動,然后通過讀MMUDriver驅(qū)動的方式等待MMUDriver驅(qū)動返回處理結果;步驟S907 =MMUDriver 驅(qū)動收到步驟 S906 中 ActivityManagei^ervice 發(fā)來的進程號后,調(diào)Linux內(nèi)核的函數(shù)讓內(nèi)核的虛擬存儲器模塊把這個進程所占有的內(nèi)存內(nèi)容交換到外存中,完成這個操作后,MMUDriver驅(qū)動向上層回寫一個狀態(tài)值;步驟S908 步驟 S906 中 ActivityManagei^ervice —直在等待 MMUDriver 驅(qū)動的返回結果,待結果反饋時,ActivityManagerService解除等待,讀出MMUDriver驅(qū)動回寫的狀態(tài)值,繼續(xù)往下執(zhí)行如下操作查看系統(tǒng)當前的空閑內(nèi)存是否大于等于預設閾值,如果是,則轉(zhuǎn)步驟S909,否則,從LRU表中排除剛交換出去的應用,轉(zhuǎn)步驟S905 ;
步驟S909 執(zhí)行應用程序啟動,流程結束??梢岳斫?,作為一種執(zhí)行效率上的優(yōu)化,ActivityManagerService可以先循環(huán)找出所有需要交換出去的應用程序后,然后集中一次通知MMUDriver驅(qū)動把這些應用程序所對應的進程所屬的內(nèi)存頁交換到外存中。從上述各實施例可以看出,本發(fā)明實施例通過改進傳統(tǒng)的內(nèi)存交換方法來降低無效的內(nèi)存交換,減弱傳統(tǒng)內(nèi)存交換方法對應用程序運行流暢度的影響,從而移動設備如手機上的內(nèi)存使用量得以降低且又不影響用戶體驗。上述實施例只是本發(fā)明的舉例,盡管為說明目的公開了本發(fā)明的最佳實施例和附圖,但是本領域的技術人員可以理解在不脫離本發(fā)明及所附的權利要求的精神和范圍內(nèi), 各種替換、變化和修改都是可能的。因此,本發(fā)明不應局限于最佳實施例和附圖所公開的內(nèi)容。
權利要求
1.一種移動設備內(nèi)存管理方法,其特征在于,包括以下步驟查找與指定應用程序無依賴關系且符合預定算法的至少一個應用程序作為待交換的應用程序;根據(jù)所述待交換的應用程序執(zhí)行內(nèi)存交換處理。
2.如權利要求1所述的方法,其特征在于,所述查找與指定應用程序無依賴關系且符合預定算法的至少一個應用程序作為待交換的應用程序這一步驟包括從正運行的應用程序中查找符合預定算法的應用程序;從查找到的符合預定算法的應用程序中查找與指定應用程序無依賴關系的應用程序, 將其作為待交換的應用程序。
3.如權利要求1或2所述的方法,其特征在于,根據(jù)所述待交換的應用程序執(zhí)行內(nèi)存交換處理這一步驟包括選中一個所述待交換的應用程序,將該選中的應用程序所對應的進程所屬的內(nèi)存頁交換到外存中;判斷該應用程序所占的內(nèi)存量與系統(tǒng)當前的可用內(nèi)存量之和是否大于等于第一預設閾值;如果不是,則繼續(xù)執(zhí)行選中一個所述待交換的應用程序這一步驟。
4.如權利要求1或2所述的方法,其特征在于,根據(jù)待交換的應用程序執(zhí)行內(nèi)存交換處理這一步驟包括選中一個所述待交換的應用程序,標記該選中的應用程序;判斷該標記的應用程序所占的內(nèi)存量與系統(tǒng)當前的可用內(nèi)存量之和是否大于等于第一預設閾值;如果不是,則繼續(xù)執(zhí)行選中一個所述待交換的應用程序這一步驟;如果是,則將所有標記的應用程序各自對應的進程所屬的內(nèi)存頁交換到外存中。
5.如權利要求1或2所述的方法,其特征在于,根據(jù)待交換的應用程序執(zhí)行內(nèi)存交換處理這一步驟包括將所述待交換的應用程序所對應的進程所屬的內(nèi)存頁交換到外存中。
6.如權利要求1-5任一項所述的方法,其特征在于,所述查找與指定應用程序無依賴關系且符合預定算法的至少一個應用程序作為待交換的應用程序這一步驟之前還包括判斷系統(tǒng)當前的可用內(nèi)存量是否大于等于第二預設閾值;若小于所述第二預設閾值, 則執(zhí)行所述查找與指定應用程序無依賴關系且符合預定算法的應用程序作為待交換的應用程序步驟;否則不作處理。
7.如權利要求1-6任一項所述的方法,其特征在于,所述符合預定算法的應用程序包括最近最少使用CPU的應用程序。
8.如權利要求1-7任一項所述的方法,其特征在于,根據(jù)待交換的應用程序執(zhí)行內(nèi)存交換管理處理這一步驟之后還包括執(zhí)行正常的應用程序啟動流程啟動所述指定應用程序;當所述指定應用程序為系統(tǒng)當前正待啟動的新的應用程序時,所述根據(jù)待交換的應用程序執(zhí)行內(nèi)存交換管理處理這一步驟之后還包括執(zhí)行正常的應用程序啟動流程啟動所述新的應用程序。
9.一種移動設備內(nèi)存管理裝置,其特征在于,包括應用管理與控制模塊,用于查找與指定應用程序無依賴關系且符合預定算法的至少一個應用程序作為待交換的應用程序;內(nèi)存交換模塊,用于根據(jù)所述應用管理與控制模塊的指示,將所述待交換的應用程序所對應的進程所屬的內(nèi)存頁交換到外存中。
10.如權利要求9所述的裝置,其特征在于,所述符合預定算法的應用程序包括最近最少使用CPU的應用程序。
全文摘要
本發(fā)明公開了一種移動設備內(nèi)存管理方法與裝置,其中方法包括以下步驟查找與指定應用程序無依賴關系且符合預定算法的至少一個應用程序作為待交換的應用程序;根據(jù)所述待交換的應用程序執(zhí)行內(nèi)存交換處理。本發(fā)明在進行內(nèi)存交換時既考慮了按預定算法查找待交換的應用程序,又考慮到應用程序間的依賴性,從而消除了無效的內(nèi)存交換,提高了用戶使用設備的體驗感。
文檔編號G06F12/08GK102226894SQ201110135149
公開日2011年10月26日 申請日期2011年5月23日 優(yōu)先權日2011年5月23日
發(fā)明者古幼鵬, 徐立鋒, 王巍, 胡煒 申請人:中興通訊股份有限公司