本申請(qǐng)涉及計(jì)算機(jī),具體涉及一種內(nèi)存管理方法、裝置、設(shè)備和存儲(chǔ)介質(zhì)。
背景技術(shù):
1、目前,隨著智能終端和智能操作系統(tǒng)的飛速發(fā)展,越來(lái)越多的智能終端能夠安裝各種各樣的應(yīng)用程序以實(shí)現(xiàn)各種功能。而在使用應(yīng)用程序及智能系統(tǒng)運(yùn)行過(guò)程中,需要不斷地分配和釋放內(nèi)存,從而會(huì)導(dǎo)致物理內(nèi)存空間的不連續(xù),長(zhǎng)此以往,系統(tǒng)內(nèi)存中會(huì)存在大量的內(nèi)存碎片,即使這些內(nèi)存碎片的總量是足夠的,也會(huì)因?yàn)檫^(guò)于碎片化而無(wú)法滿足某些進(jìn)程的內(nèi)存分配需求使得內(nèi)存分配失敗,導(dǎo)致終端性能降低且終端系統(tǒng)穩(wěn)定性和可靠性較差。
技術(shù)實(shí)現(xiàn)思路
1、本申請(qǐng)實(shí)施例提供一種內(nèi)存管理方法、裝置、設(shè)備和存儲(chǔ)介質(zhì),旨在解決現(xiàn)有技術(shù)中因內(nèi)存過(guò)于碎片化導(dǎo)致影響終端性能及系統(tǒng)穩(wěn)定性的技術(shù)問(wèn)題。
2、一方面,本申請(qǐng)實(shí)施例提供一種內(nèi)存管理方法,所述內(nèi)存管理方法包括以下步驟:
3、響應(yīng)內(nèi)存管理請(qǐng)求,確定所述內(nèi)存管理請(qǐng)求對(duì)應(yīng)的內(nèi)存管理類(lèi)型,所述內(nèi)存管理類(lèi)型包括內(nèi)存分配類(lèi)型和內(nèi)存回收類(lèi)型;
4、獲取所述內(nèi)存管理類(lèi)型對(duì)應(yīng)的定制內(nèi)存管理函數(shù),以及所述內(nèi)存管理請(qǐng)求對(duì)應(yīng)的內(nèi)存管理信息;
5、基于所述內(nèi)存管理類(lèi)型、內(nèi)存管理信息和所述定制內(nèi)存管理函數(shù)對(duì)關(guān)聯(lián)的目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存管理,得到內(nèi)存管理結(jié)果。
6、在本申請(qǐng)一種可能的實(shí)現(xiàn)方式中,所述預(yù)設(shè)跟蹤進(jìn)程包括靜態(tài)跟蹤進(jìn)程和動(dòng)態(tài)跟蹤進(jìn)程;
7、所述獲取所述內(nèi)存管理類(lèi)型對(duì)應(yīng)的定制內(nèi)存管理函數(shù),以及所述內(nèi)存管理請(qǐng)求對(duì)應(yīng)的內(nèi)存管理信息,包括:
8、將所述靜態(tài)跟蹤進(jìn)程插入所述初始內(nèi)存管理函數(shù)中的初始內(nèi)存分配函數(shù),得到定制內(nèi)存分配函數(shù);
9、基于所述動(dòng)態(tài)跟蹤進(jìn)程對(duì)所述初始內(nèi)存管理函數(shù)中的初始內(nèi)存回收函數(shù)進(jìn)行調(diào)整,得到定制內(nèi)存回收函數(shù)。
10、在本申請(qǐng)一種可能的實(shí)現(xiàn)方式中,所述基于所述內(nèi)存管理類(lèi)型、內(nèi)存管理信息和所述定制內(nèi)存管理函數(shù)對(duì)關(guān)聯(lián)的目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存管理,得到內(nèi)存管理結(jié)果之前,還包括:
11、獲取預(yù)設(shè)的內(nèi)核內(nèi)存模塊中的各默認(rèn)內(nèi)核內(nèi)存池的候選空閑內(nèi)存頁(yè);
12、確定所述候選空閑內(nèi)存頁(yè)中內(nèi)存頁(yè)類(lèi)型與預(yù)設(shè)的目標(biāo)內(nèi)存頁(yè)類(lèi)型相同的目標(biāo)空閑內(nèi)存頁(yè);
13、基于所述目標(biāo)空閑內(nèi)存頁(yè)的內(nèi)存頁(yè)地址鏈接各所述目標(biāo)空閑內(nèi)存頁(yè),得到定制內(nèi)核內(nèi)存池。
14、在本申請(qǐng)一種可能的實(shí)現(xiàn)方式中,所述基于所述內(nèi)存管理類(lèi)型、內(nèi)存管理信息和所述定制內(nèi)存管理函數(shù)對(duì)關(guān)聯(lián)的目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存管理,得到內(nèi)存管理結(jié)果,包括:
15、獲取所述目標(biāo)內(nèi)核內(nèi)存對(duì)應(yīng)的內(nèi)存管理信息,所述內(nèi)存管理信息包括內(nèi)存尺寸信息和內(nèi)存分配來(lái)源;
16、若所述內(nèi)存管理類(lèi)型為內(nèi)存分配類(lèi)型,則根據(jù)所述內(nèi)存管理信息中的內(nèi)存分配來(lái)源和所述定制內(nèi)存管理函數(shù)對(duì)所述目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存回收,得到內(nèi)存回收結(jié)果;
17、若所述內(nèi)存管理類(lèi)型為內(nèi)存回收類(lèi)型,則根據(jù)所述內(nèi)存管理信息中的內(nèi)存分配來(lái)源和所述定制內(nèi)存管理函數(shù)對(duì)所述目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存回收,得到內(nèi)存回收結(jié)果。
18、在本申請(qǐng)一種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述內(nèi)存管理信息中的內(nèi)存分配來(lái)源和所述定制內(nèi)存管理函數(shù)對(duì)所述目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存回收,得到內(nèi)存回收結(jié)果,包括:
19、若所述內(nèi)存尺寸信息為高階頁(yè)尺寸信息,則利用定制內(nèi)存分配函數(shù)獲取定制內(nèi)核內(nèi)存池中的目標(biāo)高階內(nèi)存頁(yè),分配所述目標(biāo)高階內(nèi)存頁(yè),得到第一內(nèi)存分配結(jié)果;
20、若所述內(nèi)存尺寸信息為標(biāo)準(zhǔn)頁(yè)尺寸信息,則利用定制內(nèi)存分配函數(shù)獲取默認(rèn)內(nèi)核內(nèi)存池中的目標(biāo)標(biāo)準(zhǔn)內(nèi)存頁(yè),分配所述目標(biāo)標(biāo)準(zhǔn)內(nèi)存頁(yè),得到第二內(nèi)存分配結(jié)果。
21、在本申請(qǐng)一種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述內(nèi)存分配來(lái)源和所述定制內(nèi)存管理函數(shù)對(duì)所述目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存回收,得到內(nèi)存回收結(jié)果,包括:
22、若所述內(nèi)存分配來(lái)源為定制內(nèi)核內(nèi)存池,則基于所述定制內(nèi)存回收函數(shù)將所述目標(biāo)內(nèi)核內(nèi)存掛載回所述定制內(nèi)核內(nèi)存池,得到第一內(nèi)存回收結(jié)果;
23、若所述內(nèi)存分配來(lái)源為默認(rèn)內(nèi)核內(nèi)存池,則基于所述定制內(nèi)存分配函數(shù)和所述默認(rèn)內(nèi)核內(nèi)存池對(duì)所述目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存回收,得到第二內(nèi)存回收結(jié)果。
24、在本申請(qǐng)一種可能的實(shí)現(xiàn)方式中,所述基于初始內(nèi)存分配函數(shù)和所述默認(rèn)內(nèi)核內(nèi)存池對(duì)所述目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存回收,得到第二內(nèi)存回收結(jié)果,包括:
25、若所述內(nèi)存分配來(lái)源為默認(rèn)內(nèi)核內(nèi)存池,則基于所述定制內(nèi)存回收函數(shù)將所述目標(biāo)內(nèi)核內(nèi)存與關(guān)聯(lián)內(nèi)存頁(yè)進(jìn)行合并,得到合并內(nèi)存頁(yè);
26、將所述合并內(nèi)存頁(yè)回收到所述默認(rèn)內(nèi)核內(nèi)存池,得到第二內(nèi)存回收結(jié)果。
27、另一方面,本申請(qǐng)?zhí)峁┮环N內(nèi)存管理裝置,所述內(nèi)存管理裝置包括:
28、類(lèi)型識(shí)別模塊,被配置為響應(yīng)內(nèi)存管理請(qǐng)求,確定所述內(nèi)存管理請(qǐng)求對(duì)應(yīng)的內(nèi)存管理類(lèi)型,所述內(nèi)存管理類(lèi)型包括內(nèi)存分配類(lèi)型和內(nèi)存回收類(lèi)型;
29、信息獲取模塊,被配置為獲取所述內(nèi)存管理類(lèi)型對(duì)應(yīng)的定制內(nèi)存管理函數(shù),以及所述內(nèi)存管理請(qǐng)求對(duì)應(yīng)的內(nèi)存管理信息;
30、內(nèi)存管理模塊,被配置為基于所述內(nèi)存管理類(lèi)型、內(nèi)存管理信息和所述定制內(nèi)存管理函數(shù)對(duì)關(guān)聯(lián)的目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存管理,得到內(nèi)存管理結(jié)果。
31、另一方面,本申請(qǐng)還提供一種內(nèi)存管理設(shè)備,所述內(nèi)存管理設(shè)備包括:
32、一個(gè)或多個(gè)處理器;
33、存儲(chǔ)器;以及
34、一個(gè)或多個(gè)應(yīng)用程序,其中所述一個(gè)或多個(gè)應(yīng)用程序被存儲(chǔ)于所述存儲(chǔ)器中,并配置為由所述處理器執(zhí)行以實(shí)現(xiàn)所述的內(nèi)存管理方法的步驟。
35、另一方面,本申請(qǐng)還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器進(jìn)行加載,以執(zhí)行所述的內(nèi)存管理方法中的步驟。
36、本申請(qǐng)中通過(guò)響應(yīng)內(nèi)存管理請(qǐng)求,確定所述內(nèi)存管理請(qǐng)求對(duì)應(yīng)的內(nèi)存管理類(lèi)型,所述內(nèi)存管理類(lèi)型包括內(nèi)存分配類(lèi)型和內(nèi)存回收類(lèi)型;獲取所述內(nèi)存管理類(lèi)型對(duì)應(yīng)的定制內(nèi)存管理函數(shù),以及所述內(nèi)存管理請(qǐng)求對(duì)應(yīng)的內(nèi)存管理信息;基于所述內(nèi)存管理類(lèi)型、內(nèi)存管理信息和所述定制內(nèi)存管理函數(shù)對(duì)關(guān)聯(lián)的目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存管理,得到內(nèi)存管理結(jié)果。實(shí)現(xiàn)通過(guò)在gki(gener?i?ckerne?l?i?mage,通用內(nèi)核鏡像)標(biāo)準(zhǔn)的限制下,利用預(yù)設(shè)跟蹤進(jìn)程對(duì)內(nèi)存管理函數(shù)進(jìn)行調(diào)整,得到能夠動(dòng)態(tài)調(diào)整內(nèi)核內(nèi)存,并根據(jù)內(nèi)存管理類(lèi)型和定制內(nèi)存管理函數(shù)對(duì)待管理的目標(biāo)內(nèi)核內(nèi)存進(jìn)行反碎片化管理,從而降低內(nèi)核內(nèi)存的碎片化程度,縮短申請(qǐng)大階連續(xù)內(nèi)存時(shí)間,以使得能夠有效地提高系統(tǒng)長(zhǎng)時(shí)間運(yùn)行后的內(nèi)存穩(wěn)定性。
1.一種內(nèi)存管理方法,其特征在于,所述內(nèi)存管理方法包括:
2.根據(jù)權(quán)利要求1所述的內(nèi)存管理方法,其特征在于,所述獲取所述內(nèi)存管理類(lèi)型對(duì)應(yīng)的定制內(nèi)存管理函數(shù),包括:
3.根據(jù)權(quán)利要求1所述的內(nèi)存管理方法,其特征在于,所述基于所述內(nèi)存管理類(lèi)型、內(nèi)存管理信息和所述定制內(nèi)存管理函數(shù)對(duì)關(guān)聯(lián)的目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存管理,得到內(nèi)存管理結(jié)果之前,還包括:
4.根據(jù)權(quán)利要求1所述的內(nèi)存管理方法,其特征在于,所述基于所述內(nèi)存管理類(lèi)型、內(nèi)存管理信息和所述定制內(nèi)存管理函數(shù)對(duì)關(guān)聯(lián)的目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存管理,得到內(nèi)存管理結(jié)果,包括:
5.根據(jù)權(quán)利要求4所述的內(nèi)存管理方法,其特征在于,所述根據(jù)所述內(nèi)存管理信息中的內(nèi)存分配來(lái)源和所述定制內(nèi)存管理函數(shù)對(duì)所述目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存回收,得到內(nèi)存回收結(jié)果,包括:
6.根據(jù)權(quán)利要求4所述的內(nèi)存管理方法,其特征在于,所述根據(jù)所述內(nèi)存管理信息中的內(nèi)存分配來(lái)源和所述定制內(nèi)存管理函數(shù)對(duì)所述目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存回收,得到內(nèi)存回收結(jié)果,包括:
7.根據(jù)權(quán)利要求6所述的內(nèi)存管理方法,其特征在于,所述基于定制內(nèi)存分配函數(shù)和所述默認(rèn)內(nèi)核內(nèi)存池對(duì)所述目標(biāo)內(nèi)核內(nèi)存進(jìn)行內(nèi)存回收,得到第二內(nèi)存回收結(jié)果,包括:
8.一種內(nèi)存管理裝置,其特征在于,所述內(nèi)存管理裝置包括:
9.一種內(nèi)存管理設(shè)備,其特征在于,所述內(nèi)存管理設(shè)備包括:
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器進(jìn)行加載,以執(zhí)行權(quán)利要求1至7中任一項(xiàng)所述的內(nèi)存管理方法的步驟。