內存的清理方法及裝置的制造方法
【技術領域】
[0001]本發明涉及通信領域,具體而言,涉及一種內存的清理方法及裝置。
【背景技術】
[0002]內存清理對保持移動終端穩定流暢地運行具有重要意義。相關技術中提到的內存清理算法通常是基于優先級和最近最久未使用(LRU)來實現的,其主要思想在于:當內存不足需要清理時,首先清理優先級低的進程空間,而在優先級別相同的情況下,可以按照LRU的次序進行清理(即最近使用的最后清理)。此種算法雖然簡單、直接、高效,但是現代程序設計往往遵循組件化設計思想,即一個程序的運行需要依賴其它應用進程存在。因此,只是按照進程優先級和LRU算法來決定如何清理內存,就可能會出現將當前應用在運行過程中需要使用的應用內存也一并清理完成的情況發生,從而導致需要重新將已經清理掉的內存再換進來。
[0003]由此可見,相關技術中所提供的內存清理方式忽視了應用進程之間的內存依賴關系。
【發明內容】
[0004]本發明提供了一種內存的清理方法及裝置,以至少解決相關技術中所提供的內存清理方式沒有考慮應用進程之間的依賴性的問題。
[0005]根據本發明的一個方面,提供了一種內存的清理方法。
[0006]根據本發明實施例的內存的清理方法包括:獲取第一應用進程在多次運行過程中同時運行的多個應用進程;從多個應用進程中選取部分應用進程,其中,部分應用進程是根據多個應用進程中每個應用進程在多次運行過程中的運行概率確定的;對與部分應用進程對應的第一內存頁集合進行清理。
[0007]優選地,從多個應用進程中選取部分應用進程包括:獲取第一應用進程的在多次運行過程中的第一運行次數;獲取每個應用進程在多次運行過程中的第二運行次數;通過第二運行次數與第一運行次數的比值計算運行概率;按照運行概率由低到高的次序選取部分應用進程。
[0008]優選地,在從多個應用進程中選取部分應用進程之前,還包括:在多次運行過程中獲取未包含在多個應用進程中的其他應用進程對應的第二內存頁集合;對獲取到的第二內存頁集合進行清理。
[0009]優選地,對與部分應用進程對應的第一內存頁集合進行清理包括:獲取待清理的第三內存頁集合,其中,第三內存頁集合包含第一內存頁集合且第三內存頁集合與第二內存頁集合互為補集;根據部分應用進程從第三內存頁集合中選取第一內存頁集合進行清理,其中,在每次清理過程中采用LRU算法從第一內存頁集合中選取一個內存頁作為清理對象。
[0010]優選地,在對與部分應用進程對應的第一內存頁集合進行清理之后,還包括:判斷在從第三內存頁集合中清理出第一內存頁集合后得到的內存空間是否滿足預設條件;如果否,則需要在從多個應用進程中屏蔽掉部分應用進程后,繼續從剩余的應用進程中反復按照運行概率由低到高的次序選取一個或多個應用進程,直至滿足預設條件;對再次選取出的一個或多個應用進程對應的第四內存頁集合進行清理。
[0011]根據本發明的另一方面,提供了一種內存的清理裝置。
[0012]根據本發明實施例的內存的清理裝置包括:第一獲取模塊,用于獲取第一應用進程在多次運行過程中同時運行的多個應用進程;第一選取模塊,用于從多個應用進程中選取部分應用進程,其中,部分應用進程是根據多個應用進程中每個應用進程在多次運行過程中的運行概率確定的;第一清理模塊,用于對與部分應用進程對應的第一內存頁集合進行清理。
[0013]優選地,第一選取模塊包括:第一獲取單元,用于獲取第一應用進程的在多次運行過程中的第一運行次數;第二獲取單元,用于獲取每個應用進程在多次運行過程中的第二運行次數;計算單元,用于通過第二運行次數與第一運行次數的比值計算運行概率;選取單元,用于按照運行概率由低到高的次序選取部分應用進程。
[0014]優選地,上述裝置還包括:第二獲取模塊,用于在多次運行過程中獲取未包含在多個應用進程中的其他應用進程對應的第二內存頁集合;第二清理模塊,用于對獲取到的第二內存頁集合進行清理。
[0015]優選地,第一清理模塊包括:第三獲取單元,用于獲取待清理的第三內存頁集合,其中,第三內存頁集合包含第一內存頁集合且第三內存頁集合與第二內存頁集合互為補集;清理單元,用于根據部分應用進程從第三內存頁集合中選取第一內存頁集合進行清理,其中,在每次清理過程中采用LRU算法從第一內存頁集合中選取一個內存頁作為清理對象。
[0016]優選地,上述裝置還包括:判斷模塊,用于判斷在從第三內存頁集合中清理出第一內存頁集合后得到的內存空間是否滿足預設條件;第二選取模塊,用于在判斷模塊輸出為否時,則需要在從多個應用進程中屏蔽掉部分應用進程后,繼續從剩余的應用進程中反復按照運行概率由低到高的次序選取一個或多個應用進程,直至滿足預設條件;第三清理模塊,用于對再次選取出的一個或多個應用進程對應的第四內存頁集合進行清理。
[0017]通過本發明實施例,采用獲取第一應用進程在多次運行過程中同時運行的多個應用進程;從多個應用進程中選取部分應用進程,其中,部分應用進程是根據多個應用進程中每個應用進程在多次運行過程中的運行概率確定的;對與部分應用進程對應的第一內存頁集合進行清理,解決了相關技術中所提供的內存清理方式沒有考慮應用進程之間的依賴性的問題,進而加強了內存清理的有效性,提升了系統的反應速度。
【附圖說明】
[0018]此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中:
[0019]圖1是根據本發明實施例的內存的清理方法的流程圖;
[0020]圖2是根據本發明優選實施例的內存清理過程的流程圖;
[0021]圖3是根據本發明優選實施例的統計數據結構的示意圖;
[0022]圖4是根據本發明實施例的內存的清理裝置的結構框圖;
[0023]圖5是根據本發明優選實施例的內存的清理裝置的結構框圖。
【具體實施方式】
[0024]下文中將參考附圖并結合實施例來詳細說明本發明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
[0025]圖1是根據本發明實施例的內存的清理方法的流程圖。如圖1所示,該方法可以包括以下處理步驟:
[0026]步驟S102:獲取第一應用進程在多次運行過程中同時運行的多個應用進程;
[0027]步驟S104:從多個應用進程中選取部分應用進程,其中,部分應用進程是根據多個應用進程中每個應用進程在多次運行過程中的運行概率確定的;
[0028]步驟S106:對與部分應用進程對應的第一內存頁集合進行清理。
[0029]相關技術中所提供的內存清理方式沒有考慮應用進程之間的依賴性。采用如圖1所示的方法,通過其他應用進程在第一應用進程的多次運行過程中的運行概率確定第一應用進程與其他各個應用進程之間的依賴關系,進而能夠根據依賴關系選取部分應用進程對應的內存頁加以清理。由此解決了相關技術中所提供的內存清理方式沒有考慮應用進程之間的依賴性的問題,進而加強了內存清理的有效性,提升了系統的反應速度。
[003