0]優選地,在步驟S104中,從多個應用進程中選取部分應用進程可以包括以下操作:
[0031]步驟S1:獲取第一應用進程的在多次運行過程中的第一運行次數;
[0032]步驟S2:獲取每個應用進程在多次運行過程中的第二運行次數;
[0033]步驟S3:通過第二運行次數與第一運行次數的比值計算運行概率;
[0034]步驟S4:按照運行概率由低到高的次序選取部分應用進程。
[0035]在應用進程處于前臺運行期間,對系統訪問的每個內存頁分別獲取該內存頁所歸屬的應用進程,再判斷所有這些應用進程是否均屬于前臺運行的應用進程所依賴的應用進程集合。然而,此種方式的缺陷在于可能會存在不相關的應用進程同樣在這段時間內并行運行,從而易導致將其也誤認為是依賴應用。對此,可以采取統計概率的方法來減少上述缺陷的副作用;其基本思想舉例如下:假設應用進程A在運行過程中依賴于應用進程B,而應用進程C則是一個與應用進程A完全無關的應用進程。經過多次統計應用進程A在前臺運行時所依賴的應用進程集合,由于應用進程A依賴于應用進程B,則應用進程A在每次運行時均需要運行應用進程B,因此,應用進程A每次在前臺運行期間所獲得的依賴應用進程集合中必然會包含應用進程B,而對于應用進程C而言,由于其為一個與應用進程A完全無關的應用進程,它只是碰巧應用進程A在前臺運行期間并發運行的情況下才被包含在應用進程A的所依賴應用進程集合中。由于應用進程C與應用進程A不具有相關性,故而從統計概率(被包含在應用進程A所依賴的應用進程集合中的次數/應用進程A在前臺運行的次數)的角度出發,這種碰巧并行運行的次數不會多次發生。因此,從統計概率角度考慮可以發現如下規律:統計概率越高,這個應用進程為特定應用進程的依賴應用的可能性就越大。在進行內存清理時,首先從對當前前臺運行的應用進程所依賴的應用進程集合中統計概率較低的應用進程所歸屬的內存頁加以清理,由此可以在很大程度上避免了將前臺應用進程的依賴應用進程執行誤清理。
[0036]優選地,在步驟S104,從多個應用進程中選取部分應用進程之前,還可以包括以下步驟:
[0037]步驟S5:在多次運行過程中獲取未包含在多個應用進程中的其他應用進程對應的第二內存頁集合;
[0038]步驟S6:對獲取到的第二內存頁集合進行清理。
[0039]在優選實施例中,如果發現在第一應用進程的多次運行過程中存在部分應用進程始終都沒有運行(沒有被訪問),那么由此可以斷定這些應用進程與第一應用進程之間不存在關聯性,因此,可以直接將這部分不存在關聯性的應用進程所對應的內存頁加以清理進而騰出內存空間供其他用途使用。假設應用進程A在運行過程中依賴于應用進程B,而應用進程C和應用進程D則是與應用進程A完全無關的應用進程。經過多次統計應用進程A在前臺運行時所依賴的應用進程集合,由于應用進程A依賴于應用進程B,則應用進程A在每次運行時均需要運行應用進程B,因此,應用進程A每次在前臺運行期間所獲得的依賴應用進程集合中必然會包含應用進程B,而對于應用進程C而言,由于其為一個與應用進程A完全無關的應用進程,它只是碰巧應用進程A在前臺運行期間并發運行的情況下才被包含在應用進程A的所依賴應用進程集合中。至于應用進程D,在應用進程A的前臺運行期間始終都沒有參與運行,故而在內存清理過程中,首先應當將應用進程D所對應的內存頁作為清理對象,其次是將應用進程C所對應的內存頁作為清理對象,然后才是將應用進程B所對應的內存頁作為清理對象。
[0040]優選地,在步驟S106中,對與部分應用進程對應的第一內存頁集合進行清理可以包括以下操作:
[0041]步驟S7:獲取待清理的第三內存頁集合,其中,第三內存頁集合包含第一內存頁集合且第三內存頁集合與第二內存頁集合互為補集;
[0042]步驟S8:根據部分應用進程從第三內存頁集合中選取第一內存頁集合進行清理,其中,在每次清理過程中采用LRU算法從第一內存頁集合中選取一個內存頁作為清理對象。
[0043]參照上述示例,由于經過多次統計應用進程A在前臺運行時所依賴的應用進程集合,由于應用進程A依賴于應用進程B,則應用進程A在每次運行時均需要運行應用進程B,因此,應用進程A每次在前臺運行期間所獲得的依賴應用進程集合中必然會包含應用進程B,而對于應用進程C而言,由于其為一個與應用進程A完全無關的應用進程,它只是碰巧應用進程A在前臺運行期間并發運行的情況下才被包含在應用進程A的所依賴應用進程集合中。至于應用進程D,在應用進程A的前臺運行期間始終都沒有參與運行。故而上述應用進程B和應用進程C合在一起對應第三內存頁集合,應用進程C單獨對應第一內存頁集合,而應用進程D則對應第二內存頁集合。在內存清理過程中,首先應當將應用進程D所對應的第二內存頁集合作為清理對象,其次是將應用進程C所對應的第一內存頁集合作為清理對象,然后才是將應用進程B所對應的在從第三內存頁集合中屏蔽掉第一內存頁集合之后剩余的內存頁作為清理對象。
[0044]優選地,在步驟S106,對與部分應用進程對應的第一內存頁集合進行清理之后,還可以包括以下步驟:
[0045]步驟S9:判斷在從第三內存頁集合中清理出第一內存頁集合后得到的內存空間是否滿足預設條件;
[0046]步驟S10:如果否,則需要在從多個應用進程中屏蔽掉部分應用進程后,繼續從剩余的應用進程中反復按照運行概率由低到高的次序選取一個或多個應用進程,直至滿足預設條件;
[0047]步驟S11:對再次選取出的一個或多個應用進程對應的第四內存頁集合進行清理。
[0048]下面將結合圖2所示的優選實施方式對上述優選實施過程作進一步的描述。
[0049]圖2是根據本發明優選實施例的內存清理過程的流程圖。如圖2所示,該流程可以包括以下處理步驟:
[0050]步驟S202:當應用進程A切換至前臺運行時,記錄此時前臺應用進程名稱為A ;
[0051]步驟S204:等待事件發生;如果發生內存清理事件,則繼續執行步驟S206 ;
[0052]步驟S206-步驟S208:當發生內存清理事件需要進行內存清理時,判斷應用進程A在前臺運行的次數是否已經達到第一預設閾值;如果是,則繼續執行步驟S210 ;如果否,則轉到步驟S236 ;
[0053]步驟S210:按照LRU算法從候選內存頁中選取一個需要清理的內存頁;
[0054]步驟S212:判斷是否能夠選擇出一個需要清理的內存頁;如果是,則繼續執行步驟S214 ;如果否,則轉到步驟S222 ;
[0055]步驟S214:判斷該內存頁是否屬于應用進程A所依賴的應用進程集合;如果該內存頁不屬于應用進程A所依賴的應用進程集合,則繼續執行步驟S216 ;如果該內存頁屬于應用進程A所依賴的應用進程集合,則繼續執行步驟S220 ;
[0056]步驟S216:將該內存頁標記為可以清理,從LRU的內存頁集合中刪除該內存頁,
[0057]步驟S218:判斷是否清理出足夠的內存;如果是,則繼續執行步驟S242 ;如果否,則返回步驟S210 ;
[0058]步驟S220:在候選內存頁中暫時屏蔽掉該內存頁;返回步驟S210 ;<