本技術涉及數(shù)據(jù)處理,尤其地涉及一種內存回收方法、終端、存儲介質及程序產品。
背景技術:
1、手機、平板電腦等終端中安裝的應用程序運行時,終端內部署的操作系統(tǒng)會為應用程序創(chuàng)建進程,并為進程分配虛擬內存區(qū)域(virtual?memory?area,vma),上述vma與物理內存的內存頁之間存在映射關系,這樣,各個進程可以通過其對應的vma間接訪問內存頁,也就是,進程可以在物理內存的內存頁中運行。
2、其中,物理內存的容量是有限的,在內存緊張的情況下,若存在新的內存需求,操作系統(tǒng)需要進行內存回收,即,解除內存頁與vma之間的映射關系。這樣,解除映射關系的內存頁被回收,可以用于供給上述內存需求。
3、然而,一些情況下,一個內存頁會與較多的vma存在映射關系,回收這樣的內存頁時,需要解除內存頁與較多vma之間的映射關系,需要花費的時間較長,導致內存回收的效率較低。
技術實現(xiàn)思路
1、有鑒于此,本技術提供一種內存回收方法、終端、存儲介質及程序產品,以提高內存回收效率。
2、第一方面,本技術實施例提供了一種內存回收方法,所述方法包括:
3、從非活躍的第一內存頁鏈表的起始內存頁開始,基于目標回收數(shù)量,逐個確定回收成本表征值小于等于第一回收成本限制值的第一內存頁,其中,所述第一內存頁鏈表中包括的內存頁為:活躍的第二內存頁鏈表記錄的內存頁中淘汰的、回收成本表征值小于等于第二回收成本限制值的內存頁,所述第一內存頁的最大數(shù)量為所述目標回收數(shù)量,回收成本表征值:基于與內存頁存在映射關系的虛擬內存區(qū)域vma的數(shù)量確定;
4、確定與每一第一內存頁存在映射關系的第一vma;
5、確定分配了各第一vma的第一進程對應的第一映射頁表;
6、解除各第一映射頁表中存儲的第一內存頁與第一vma之間的映射關系,并從所述第一內存頁鏈表中刪除各第一內存頁。
7、由以上可見,應用本技術實施例提供的方案進行內存回收時,從非活躍的第一內存頁鏈表的起始內存頁開始,逐個確定回收成本表征值小于等于第一回收成本限制值的第一內存頁,且第一內存頁的最大數(shù)量為目標回收數(shù)量,從而,可以確定與每一第一內存頁存在映射關系的第一vma,并確定分配了各第一vma的第一進程對應的第一映射頁表,進而可以解除各第一映射頁表中存儲的第一內存頁與第一vma之間的映射關系,并從第一內存頁鏈表中刪除各第一內存頁。這樣,第一內存頁被成功回收,可以用于供給新的內存需求。
8、其中,回收成本表征值用于描述回收內存頁所花費的成本,回收成本表征值小于第一回收成本限制值的內存頁,也就是回收成本較小的內存頁。由此可見,本技術實施例提供的方案在確定本次待回收的第一內存頁時,考慮的是內存頁的回收成本,進行內存回收時,可以優(yōu)先選擇回收成本較小的內存頁進行回收,整體上有利于使得最終回收的內存頁都是回收成本較小的內存頁,降低了內存回收時所花費的計算資源成本和時間成本,提高了內存回收的效率,加快了內存的供給速度。
9、本技術的一個實施例中,所述方法還包括:
10、若已確定出的第一內存頁的數(shù)量小于所述目標回收數(shù)量,則增大所述第一回收成本限制值;
11、返回所述從非活躍的第一內存頁鏈表的起始內存頁開始,基于目標回收數(shù)量,逐個確定回收成本表征值小于等于第一回收成本限制值的第一內存頁的步驟。
12、第一內存頁是根據(jù)內存頁的回收成本表征值與第一回收成本限制值確定的,在已確定出的第一內存頁的數(shù)量小于目標回收數(shù)量的情況下,即已回收的內存頁的數(shù)量沒有達到預期的回收數(shù)量,表明第一內存頁鏈表中的部分內存頁的回收成本較高,此時,增大第一回收成本限制值,可以放寬確定第一內存頁時的判定條件,這樣再返回執(zhí)行內存回收流程時,有利于基于增大后的第一回收成本限制值確定出更多的第一內存頁,從而有利于確定出數(shù)量滿足目標回收數(shù)量的第一內存頁,保證了本次內存回收能夠滿足內存回收需求。
13、本技術的一個實施例中,所述增大所述第一回收成本限制值,包括:
14、為所述第一回收成本限制值增加第一步長,得到增大后的第一回收成本限制值。
15、這樣,在已確定的第一內存頁的數(shù)量未達到目標回收數(shù)量時,可以按照第一步長,逐步增大第一回收成本限制值,有利于使得根據(jù)增大后的第一回收成本限制值確定出更多的第一內存頁。
16、本技術的一個實施例中,所述第一步長為:預設的步長值。
17、這樣,第一步長是預先設定的,無需執(zhí)行確定步長的步驟,可以按照預設的步長值便捷的增大第一回收成本限制值,提高了方案的執(zhí)行效率。
18、本技術的一個實施例中,所述第一步長為:根據(jù)已確定出的第一內存頁的數(shù)量和所述目標回收數(shù)量確定的步長值。
19、可以看出,已確定出的第一內存頁的數(shù)量和目標回收數(shù)量能夠反映內存頁的回收成本表征值和第一回收成本限制值之間的差距,進而能夠反映按照當前第一回收成本限制值進行內存回收的回收難度,按照上述回收難度可以準確、合理的確定用于增大第一回收成本限制值的第一步長。
20、本技術的一個實施例中,所述回收成本表征值為:與內存頁存在映射關系的vma的數(shù)量。
21、與內存頁存在映射關系的vma的數(shù)量可以較為便捷、準確的反映內存頁的回收成本,提高了所得回收成本表征值的準確度。
22、本技術的一個實施例中,所述回收成本表征值為:基于與內存頁存在映射關系的vma的數(shù)量確定的回收時長預測值。
23、這樣,可以從內存頁的回收時長這一角度,直觀、準確的反映內存頁的回收成本。
24、本技術的一個實施例中,所述方法還包括:
25、判斷內存回收需求是否為緊急內存回收需求;
26、若為否,則執(zhí)行所述從非活躍的第一內存頁鏈表的起始內存頁開始,基于目標回收數(shù)量,逐個確定回收成本表征值小于等于第一回收成本限制值的第一內存頁的步驟。
27、若內存回收需求不為緊急內存回收需求,表示內存剩余容量還較為充足,本次內存需求不緊迫,回收壓力較小,此時,可以采用本技術實施例提供的方案以提高內存頁的回收效率,提高了方案的合理性。
28、本技術的一個實施例中,所述判斷內存回收需求是否為緊急內存回收需求,包括:
29、基于以下條件中的至少一種,判斷內存回收需求是否為緊急內存回收需求:
30、內存回收需求的緊急度大于預設緊急度;
31、剩余內存容量小于預設容量閾值;
32、所述第二內存頁鏈表與所述第一內存頁鏈表之間的長度比例大于預設比例閾值。
33、這樣,可以采用多種條件,從多個維度判斷內存回收需求是否為緊急內存回收需求,提高了判斷的準確度和合理性。
34、本技術的一個實施例中,所述方法還包括:
35、判斷非活躍的第一內存頁鏈表中包括的內存頁的數(shù)量與目標回收數(shù)量之差是否大于預設數(shù)量;
36、若為是,執(zhí)行所述從非活躍的第一內存頁鏈表的起始內存頁開始,基于目標回收數(shù)量,逐個確定回收成本表征值小于等于第一回收成本限制值的第一內存頁的步驟。
37、內存頁的數(shù)量與目標回收數(shù)量之差較大時,第一內存頁鏈表中的小部分內存頁要被回收,該情況下,可以采用本技術實施例提供的方案,從中挑選回收成本較低的內存頁進行回收,以提高內存頁的回收效率,提高了方案的合理性。
38、第二方面,本技術實施例提供了一種終端,包括:
39、一個或多個處理器和存儲器;
40、所述存儲器與所述一個或多個處理器耦合,所述存儲器用于存儲計算機程序代碼,所述計算機程序代碼包括計算機指令,所述一個或多個處理器調用所述計算機指令以使得所述終端執(zhí)行第一方面所述的方法。
41、第三方面,本技術實施例提供了一種計算機可讀存儲介質,包括計算機程序,當所述計算機程序在終端上運行時,使得所述終端執(zhí)行第一方面所述的方法。
42、第四方面,本技術實施例提供了一種計算機程序產品,所述計算機程序產品包含可執(zhí)行指令,當所述可執(zhí)行指令在終端上執(zhí)行時,使得終端執(zhí)行第一方面所述的方法。
43、第五方面,本技術實施例提供了一種芯片系統(tǒng),所述芯片系統(tǒng)應用于終端,所述芯片系統(tǒng)包括一個或多個處理器,所述處理器用于調用計算機指令以使得所述終端將數(shù)據(jù)輸入芯片系統(tǒng),并執(zhí)行第一方面所述的方法進行內存回收。
44、上述第二方面至第五方面中各實施例所提供方案的有益效果可參見上述第一方面中各實施例所提供方案的有益效果。