The embodiment of the invention discloses a memory management method and a terminal. The method includes: to detect if the memory request, the memory access request in the application memory and terminal current idle memory; if the free memory is less than the application memory, access to the running process and generating process according to the preset list; release the memory rules to determine the list of processes to release process; release the memory occupied by the process to be released. Embodiments of the present invention by acquiring memory application request in application memory, when the current terminal free memory cannot satisfy the application memory, access to the running process and generate a list of processes, according to the preset memory release rules determine the process list to release process, the removal of the release process can meet the application memory, thereby changing the the memory recovery mechanism existing Android system is time-consuming and caused by Caton phenomenon, and improve the user experience.
【技術實現步驟摘要】
一種內存管理方法及終端
本專利技術涉及通信
,尤其涉及一種內存管理方法及終端。
技術介紹
安卓系統,其內存管理是基于Linux的內存管理,在Linuxkernel層實現LMK(LowMemoryKiller,內存回收機制)機制,在低內存的狀態下,通過kill進程,釋放內存,達到內存回收的目的。這個機制比較的簡單,主要有兩個考量因素,一個是應用在framework層調度時設定的一個adjustment,相當于進程的優先級,這個優先級在一定的范圍內取值,比如0-15,應用得到的值越大,其優先級越低,LMK回收的時候,則會首先考慮優先級較低的進程。不同狀態下的內存水位,對應不同的進程優先級。現有的機制有以下的缺點,根據優先級從低到高(15~0)回收進程時,低級別進程回收的內存往往不能滿足新的內存需求,因為進程級別跟內存的大小沒有關系,級別低不代表占用的內存就多,所以回收10個低優先級進程帶來的內存,可能還沒有一個高級別進程釋放的多,而持續的kill進程與回收,這個過程的耗時就會導致應用的卡頓,降低了用戶對終端的體驗。
技術實現思路
本專利技術實施例提供一種內存管理方法及終端,以解決現有的LMK內存回收機制在回收內存時出現耗時和導致應用卡頓等問題。第一方面,本專利技術實施例提供了一種內存管理方法,該方法包括:若檢測到內存申請請求時,獲取所述內存申請請求中的申請內存和終端當前空閑內存;若所述空閑內存小于所述申請內存,獲取正在運行進程并生成進程列表;根據預設內存釋放規則確定所述進程列表中待釋放進程;釋放所述待釋放進程所占用的內存。第二方面,本專利技術實施例還提供了一 ...
【技術保護點】
一種內存管理方法,其特征在于,包括:若檢測到內存申請請求時,獲取所述內存申請請求中的申請內存和終端當前空閑內存;若所述空閑內存小于所述申請內存,獲取正在運行進程并生成進程列表;根據預設內存釋放規則確定所述進程列表中待釋放進程;釋放所述待釋放進程所占用的內存。
【技術特征摘要】
1.一種內存管理方法,其特征在于,包括:若檢測到內存申請請求時,獲取所述內存申請請求中的申請內存和終端當前空閑內存;若所述空閑內存小于所述申請內存,獲取正在運行進程并生成進程列表;根據預設內存釋放規則確定所述進程列表中待釋放進程;釋放所述待釋放進程所占用的內存。2.根據權利要求1所述的內存管理方法,其特征在于,所述獲取正在運行的進程并生成進程列表,具體包括:獲取正在運行進程的占用內存,根據所述占用內存的大小對所述正在運行進程進行排序并生成進程列表;所述根據預設內存釋放規則確定所述進程列表中待釋放進程,具體包括:判斷所述申請內存是否大于所述進程列表中最大占用內存的進程內存;若所述申請內存大于所述進程列表中最大占用內存的進程內存,則按照所述進程列表的排序確定所述待釋放進程。3.根據權利要求2所述的內存管理方法,其特征在于,在所述判斷所述申請內存是否大于所述進程列表中最大占用內存的進程內存之后,還包括:若所述申請內存未大于所述進程列表中最大占用內存的進程內存,則獲取所述進程列表中所有進程的優先等級;根據所述申請內存獲取所述進程列表中的多個目標進程,其中所述多個目標進程為占用內存大于所述申請內存的進程;選擇所述多個目標進程中優先等級最低的目標進程為所述待釋放進程。4.根據權利要求1所述的內存管理方法,其特征在于,所述獲取正在運行進程并生成進程列表,具體包括:獲取正在運行本地進程和應用進程并生成進程列表;在所述根據預設內存釋放規則確定所述進程列表中待釋放進程之前,還包括:判斷所述本地進程是否存在內存泄露;若所述本地進程是存在內存泄露,所述根據預設內存釋放規則確定所述進程列表中待釋放進程,具體為:將所述本地進程作為所述進程列表中待釋放進程。5.根據權利要求1所述的內存管理方法,其特征在于,在所述釋放所述待釋放進程所占用的內存之后,還包括:獲取終端的可使用內存,判斷所述可使用內存是否大于預設內存閾值;若所述可使用內存大于所述預設內存閾值,則重新調用LMK內存回收機制。6.一種終端,其特...
【專利技術屬性】
技術研發人員:劉然,李韌,
申請(專利權)人:深圳市金立通信設備有限公司,
類型:發明
國別省市:廣東,44
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。