一種內(nèi)存管理方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別涉及一種內(nèi)存管理方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,計(jì)算機(jī)領(lǐng)域內(nèi)的數(shù)據(jù)量及數(shù)據(jù)處理需求不斷提升,且負(fù)載對(duì)于系統(tǒng)性能的要求越來(lái)越高。從實(shí)時(shí)性的角度來(lái)講,要求內(nèi)存分配的過(guò)程要盡可能地快,但是在數(shù)據(jù)量大的情況下,內(nèi)存分配的效率必然會(huì)受到影響;同時(shí),因?yàn)閮?nèi)存是一種有限的資源,且由于系統(tǒng)硬件環(huán)境空間有限,內(nèi)存分配還要求高效,因此在內(nèi)存分配的過(guò)程中需要盡量減少浪費(fèi);因此,業(yè)界急需提出一種高效且處理效率高的內(nèi)存管理辦法,使其可以有效實(shí)現(xiàn)上述要求。
【發(fā)明內(nèi)容】
[0003]本發(fā)明提供一種內(nèi)存管理方法及系統(tǒng),用以高效合理地分配內(nèi)存,提高了處理效率,提升了內(nèi)存利用率和系統(tǒng)性能。
[0004]根據(jù)本發(fā)明實(shí)施例的第一方面,提供一種內(nèi)存管理方法,包括:
[0005]將內(nèi)存預(yù)先劃分為多個(gè)內(nèi)存分區(qū),將所述內(nèi)存分區(qū)分別分配為多個(gè)不同量級(jí)的內(nèi)存塊;
[0006]接收包含內(nèi)存需求的網(wǎng)絡(luò)數(shù)據(jù)包,并根據(jù)所述網(wǎng)絡(luò)數(shù)據(jù)包中包含的內(nèi)存需求的大小為所述網(wǎng)絡(luò)數(shù)據(jù)包分配所述內(nèi)存塊的內(nèi)存地址;
[0007]檢測(cè)所述內(nèi)存分區(qū)中不同量級(jí)的所述內(nèi)存塊的使用率,并根據(jù)所述使用率重新調(diào)整所述內(nèi)存分區(qū)中的內(nèi)存塊的量級(jí)。
[0008]在一個(gè)實(shí)施例中,所述將內(nèi)存預(yù)先劃分為多個(gè)內(nèi)存分區(qū),并將各所述內(nèi)存分區(qū)分別分配為多個(gè)不同量級(jí)的內(nèi)存塊,包括:
[0009]根據(jù)需要將內(nèi)存預(yù)先劃分為多個(gè)相同/不同大小的內(nèi)存分區(qū);
[0010]將所述內(nèi)存分區(qū)分別分配為多個(gè)不同量級(jí)的內(nèi)存塊,并將所述內(nèi)存塊的使用狀態(tài)標(biāo)識(shí)為未使用;其中,所述內(nèi)存塊的不同量級(jí)為128字節(jié)或/和512字節(jié)或/和1024字節(jié)或/和1536字節(jié)。
[0011]在一個(gè)實(shí)施例中,所述接收包含內(nèi)存需求的網(wǎng)絡(luò)數(shù)據(jù)包,并根據(jù)所述網(wǎng)絡(luò)數(shù)據(jù)包中包含的內(nèi)存需求的大小為所述網(wǎng)絡(luò)數(shù)據(jù)包分配所述內(nèi)存塊的內(nèi)存地址,包括:
[0012]接收包含內(nèi)存需求的網(wǎng)絡(luò)數(shù)據(jù)包;
[0013]檢測(cè)各內(nèi)存分區(qū)中使用狀態(tài)為未使用的所述內(nèi)存塊中,是否存在內(nèi)存容量等于或大于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求的所述內(nèi)存塊;
[0014]在各內(nèi)存分區(qū)中存在內(nèi)存容量等于或大于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求的所述內(nèi)存塊時(shí),提取內(nèi)存容量與所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求之間差值最小的所述內(nèi)存塊的內(nèi)存地址;
[0015]將提取的所述內(nèi)存地址分配給所述網(wǎng)絡(luò)數(shù)據(jù)包后,將提取內(nèi)存地址的所述內(nèi)存塊的使用狀態(tài)標(biāo)識(shí)為已使用。
[0016]在一個(gè)實(shí)施例中,所述根據(jù)所述網(wǎng)絡(luò)數(shù)據(jù)包中包含的內(nèi)存需求的大小為所述網(wǎng)絡(luò)數(shù)據(jù)包分配所述內(nèi)存塊的內(nèi)存地址,還包括:
[0017]在各內(nèi)存分區(qū)中不存在內(nèi)存容量等于或大于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求的所述內(nèi)存塊時(shí),檢測(cè)當(dāng)前內(nèi)存分區(qū)中使用狀態(tài)為未使用的所有內(nèi)存塊的總內(nèi)存容量是否等于或大于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求;
[0018]在當(dāng)前內(nèi)存分區(qū)中所有內(nèi)存塊的總內(nèi)存容量等于或大于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求時(shí),將所述內(nèi)存分區(qū)的未使用內(nèi)存塊重新分配為不同量級(jí)的內(nèi)存塊,且重新分配后的所述內(nèi)存塊中至少包含一個(gè)所屬量級(jí)的內(nèi)存容量與所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求之間差值最小的內(nèi)存塊;
[0019]提取內(nèi)存容量與所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求之間差值最小的所述內(nèi)存塊的內(nèi)存地址;將提取的所述內(nèi)存地址分配給所述網(wǎng)絡(luò)數(shù)據(jù)包后,將提取內(nèi)存地址的所述內(nèi)存塊的使用狀態(tài)標(biāo)識(shí)為已使用。
[0020]在一個(gè)實(shí)施例中,所述根據(jù)所述網(wǎng)絡(luò)數(shù)據(jù)包中包含的內(nèi)存需求的大小為所述網(wǎng)絡(luò)數(shù)據(jù)包分配所述內(nèi)存塊的內(nèi)存地址,還包括:
[0021 ] 在當(dāng)前內(nèi)存分區(qū)中所有內(nèi)存塊的總內(nèi)存容量小于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求時(shí),檢測(cè)其他內(nèi)存分區(qū)中使用狀態(tài)為未使用的所有內(nèi)存塊的總內(nèi)存容量是否等于或大于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求;
[0022]在其他內(nèi)存分區(qū)中所有內(nèi)存塊的總內(nèi)存容量等于或大于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求時(shí),將其他所述內(nèi)存分區(qū)的未使用內(nèi)存塊重新分配為不同量級(jí)的內(nèi)存塊,且重新分配后的所述內(nèi)存塊中至少包含一個(gè)所屬量級(jí)的內(nèi)存容量與所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求之間差值最小的內(nèi)存塊;
[0023]提取內(nèi)存容量與所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求之間差值最小的所述內(nèi)存塊的內(nèi)存地址;將提取的所述內(nèi)存地址分配給所述網(wǎng)絡(luò)數(shù)據(jù)包后,將提取內(nèi)存地址的所述內(nèi)存塊的使用狀態(tài)標(biāo)識(shí)為已使用。
[0024]根據(jù)本發(fā)明實(shí)施例的第二方面,還提供一種內(nèi)存管理系統(tǒng),包括:
[0025]內(nèi)存分配模塊,用于將內(nèi)存預(yù)先劃分為多個(gè)內(nèi)存分區(qū),將所述內(nèi)存分區(qū)分別分配為多個(gè)不同量級(jí)的內(nèi)存塊;
[0026]內(nèi)存地址分配模塊,用于接收包含內(nèi)存需求的網(wǎng)絡(luò)數(shù)據(jù)包,并根據(jù)所述網(wǎng)絡(luò)數(shù)據(jù)包中包含的內(nèi)存需求的大小為所述網(wǎng)絡(luò)數(shù)據(jù)包分配所述內(nèi)存塊的內(nèi)存地址;
[0027]量級(jí)調(diào)整模塊,用于檢測(cè)所述內(nèi)存分區(qū)中不同量級(jí)的所述內(nèi)存塊的使用率,并根據(jù)所述使用率重新調(diào)整所述內(nèi)存分區(qū)中的內(nèi)存塊的量級(jí)。
[0028]在一個(gè)實(shí)施例中,所述內(nèi)存分配模塊包括:
[0029]分區(qū)子模塊,用于根據(jù)需要將內(nèi)存預(yù)先劃分為多個(gè)相同/不同大小的內(nèi)存分區(qū);
[0030]第一內(nèi)存分配子模塊,用于將所述內(nèi)存分區(qū)分別分配為多個(gè)不同量級(jí)的內(nèi)存塊,并將所述內(nèi)存塊的使用狀態(tài)標(biāo)識(shí)為未使用;其中,所述內(nèi)存塊的不同量級(jí)為128字節(jié)或/和512字節(jié)或/和1024字節(jié)或/和1536字節(jié)。
[0031]在一個(gè)實(shí)施例中,所述內(nèi)存地址分配模塊包括:
[0032]數(shù)據(jù)包接收子模塊,用于接收包含內(nèi)存需求的網(wǎng)絡(luò)數(shù)據(jù)包;
[0033]第一檢測(cè)子模塊,用于檢測(cè)各內(nèi)存分區(qū)中使用狀態(tài)為未使用的所述內(nèi)存塊中,是否存在內(nèi)存容量等于或大于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求的所述內(nèi)存塊;
[0034]內(nèi)存地址提取子模塊,用于在各內(nèi)存分區(qū)中存在內(nèi)存容量等于或大于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求的所述內(nèi)存塊時(shí),提取內(nèi)存容量與所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求之間差值最小的所述內(nèi)存塊的內(nèi)存地址;
[0035]第一內(nèi)存地址分配模塊,用于將提取的所述內(nèi)存地址分配給所述網(wǎng)絡(luò)數(shù)據(jù)包后,將提取內(nèi)存地址的所述內(nèi)存塊的使用狀態(tài)標(biāo)識(shí)為已使用。
[0036]在一個(gè)實(shí)施例中,所述內(nèi)存地址分配模塊還包括:
[0037]第二檢測(cè)子模塊,用于在各內(nèi)存分區(qū)中不存在內(nèi)存容量等于或大于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求的所述內(nèi)存塊時(shí),檢測(cè)當(dāng)前內(nèi)存分區(qū)中使用狀態(tài)為未使用的所有內(nèi)存塊的總內(nèi)存容量是否等于或大于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求;
[0038]第二內(nèi)存分配子模塊,用于在當(dāng)前內(nèi)存分區(qū)中所有內(nèi)存塊的總內(nèi)存容量等于或大于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求時(shí),將所述內(nèi)存分區(qū)的未使用內(nèi)存塊重新分配為不同量級(jí)的內(nèi)存塊,且重新分配后的所述內(nèi)存塊中至少包含一個(gè)所屬量級(jí)的內(nèi)存容量與所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求之間差值最小的內(nèi)存塊;
[0039]第二內(nèi)存地址分配子模塊,用于提取內(nèi)存容量與所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求之間差值最小的所述內(nèi)存塊的內(nèi)存地址;將提取的所述內(nèi)存地址分配給所述網(wǎng)絡(luò)數(shù)據(jù)包后,將提取內(nèi)存地址的所述內(nèi)存塊的使用狀態(tài)標(biāo)識(shí)為已使用。
[0040]在一個(gè)實(shí)施例中,所述內(nèi)存地址分配模塊還包括:
[0041]第三檢測(cè)子模塊,用于在當(dāng)前內(nèi)存分區(qū)中所有內(nèi)存塊的總內(nèi)存容量小于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求時(shí),檢測(cè)其他內(nèi)存分區(qū)中使用狀態(tài)為未使用的所有內(nèi)存塊的總內(nèi)存容量是否等于或大于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求;
[0042]第三內(nèi)存分配子模塊,用于在其他內(nèi)存分區(qū)中所有內(nèi)存塊的總內(nèi)存容量等于或大于所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求時(shí),將其他所述內(nèi)存分區(qū)的未使用內(nèi)存塊重新分配為不同量級(jí)的內(nèi)存塊,且重新分配后的所述內(nèi)存塊中至少包含一個(gè)所屬量級(jí)的內(nèi)存容量與所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求之間差值最小的內(nèi)存塊;
[0043]第三內(nèi)存地址分配子模塊,用于提取內(nèi)存容量與所述網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存需求之間差值最小的所述內(nèi)存塊的內(nèi)存地址;將提取的所述內(nèi)存地址分配給所述網(wǎng)絡(luò)數(shù)據(jù)包后,將提取內(nèi)存地址的所述內(nèi)存塊的使用狀態(tài)標(biāo)識(shí)為已使用。
[0044]本發(fā)明實(shí)施例提供的技術(shù)方案