間建立一一對(duì)應(yīng)關(guān)系,例如:應(yīng)用模塊用戶組O與內(nèi)存管理鏈表O對(duì)應(yīng),應(yīng)用模塊用戶組I與內(nèi)存管理鏈表I對(duì)應(yīng),依次類推,應(yīng)用模塊用戶組9與內(nèi)存管理鏈表9對(duì)應(yīng)。
[0061]以應(yīng)用模塊用戶54為例,通過如下方式確定還存在應(yīng)用模塊用戶54對(duì)應(yīng)的內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息:應(yīng)用模塊用戶標(biāo)識(shí)為54,確定該應(yīng)用模塊用戶所在的應(yīng)用模塊用戶組為應(yīng)用模塊用戶組5,應(yīng)用模塊用戶組5對(duì)應(yīng)的內(nèi)存管理鏈表為內(nèi)存管理鏈表5,當(dāng)確定內(nèi)存管理鏈表5的忙鏈表中存在應(yīng)用模塊用戶54與內(nèi)存塊屬性信息之間的對(duì)應(yīng)關(guān)系時(shí),確定還存在應(yīng)用模塊用戶54對(duì)應(yīng)的內(nèi)存塊被應(yīng)用模塊用戶54占用的記錄信息,不需要在10個(gè)內(nèi)存管理鏈表中逐個(gè)確定,可以直接在內(nèi)存管理鏈表5中確定應(yīng)用模塊用戶標(biāo)識(shí)與內(nèi)存塊屬性信息之間的對(duì)應(yīng)關(guān)系,縮小內(nèi)存泄露的檢測(cè)范圍,提高內(nèi)存泄露的檢測(cè)效率。
[0062]本發(fā)明實(shí)施例提供的一種內(nèi)存管理裝置,如圖3所示,包括:內(nèi)存分配單元302,用于當(dāng)接收到應(yīng)用模塊用戶申請(qǐng)內(nèi)存的請(qǐng)求消息時(shí),根據(jù)該請(qǐng)求消息為應(yīng)用模塊用戶分配一個(gè)內(nèi)存塊,并且建立該內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息;內(nèi)存釋放單元304,連接至內(nèi)存分配單元302,用于當(dāng)確定需要釋放為應(yīng)用模塊用戶分配的任一內(nèi)存塊時(shí),釋放該內(nèi)存塊,并且刪除該內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息;處理單元306,連接至內(nèi)存分配單元302和內(nèi)存釋放單元304,用于當(dāng)需要釋放應(yīng)用模塊用戶時(shí),若確定還存在該應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息,則釋放該記錄信息中記錄的被該應(yīng)用模塊用戶占用的內(nèi)存塊,并且刪除該內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息。
[0063]本發(fā)明實(shí)施例提供的裝置中,接收到應(yīng)用模塊用戶申請(qǐng)內(nèi)存的請(qǐng)求消息時(shí),根據(jù)該請(qǐng)求消息為應(yīng)用模塊用戶分配一個(gè)內(nèi)存塊,建立該內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息,當(dāng)確定需要釋放該內(nèi)存塊時(shí),釋放該內(nèi)存塊,并且刪除該內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息,則當(dāng)需要釋放應(yīng)用模塊用戶時(shí),若確定還存在該應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息,則確定該應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存塊未能完全釋放,發(fā)生內(nèi)存泄露,則釋放該記錄信息中記錄的被該應(yīng)用模塊用戶占用的內(nèi)存塊,恢復(fù)泄露的內(nèi)存,與現(xiàn)有技術(shù)中由于程序錯(cuò)誤或其它原因?qū)е聭?yīng)用模塊用戶的某些業(yè)務(wù)申請(qǐng)的內(nèi)存塊未能釋放而引起內(nèi)存泄露,進(jìn)而導(dǎo)致單板故障、業(yè)務(wù)異常相比,當(dāng)需要釋放應(yīng)用模塊用戶時(shí),若確定還存在該應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息,則釋放該記錄信息中記錄的被該應(yīng)用模塊用戶占用的內(nèi)存塊,也即檢測(cè)到內(nèi)存泄露時(shí),及時(shí)釋放泄露的內(nèi)存,避免由于內(nèi)存泄露導(dǎo)致單板故障、業(yè)務(wù)異常,而且實(shí)現(xiàn)簡(jiǎn)單高效。
[0064]在一種可能的實(shí)施方式中,本發(fā)明實(shí)施例提供的裝置中,內(nèi)存分配單元302根據(jù)該請(qǐng)求消息為應(yīng)用模塊用戶分配一個(gè)內(nèi)存塊,并且建立該內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息,具體用于:針對(duì)為該應(yīng)用模塊用戶分配的每一內(nèi)存塊:內(nèi)存分配單元302在預(yù)設(shè)的內(nèi)存管理鏈表中存儲(chǔ)應(yīng)用模塊用戶標(biāo)識(shí)與該內(nèi)存塊屬性信息之間的對(duì)應(yīng)關(guān)系,其中,內(nèi)存管理鏈表中的表項(xiàng)與內(nèi)存塊一一對(duì)應(yīng),用于記錄每一內(nèi)存塊被應(yīng)用模塊用戶占用的記錄信息,內(nèi)存塊屬性信息包括內(nèi)存塊的標(biāo)識(shí)和地址信息。
[0065]在一種可能的實(shí)施方式中,本發(fā)明實(shí)施例提供的裝置中,內(nèi)存管理鏈表中包括忙鏈表和閑鏈表,當(dāng)內(nèi)存分配單元302為應(yīng)用模塊用戶分配一內(nèi)存塊時(shí),從閑鏈表中獲取一表項(xiàng)存儲(chǔ)該內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息,并添加到忙鏈表中。
[0066]在一種可能的實(shí)施方式中,本發(fā)明實(shí)施例提供的裝置中,內(nèi)存分配單元302從閑鏈表中獲取一表項(xiàng)存儲(chǔ)該內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息之后,還用于:在預(yù)先存儲(chǔ)的內(nèi)存關(guān)系表中存儲(chǔ)表項(xiàng)標(biāo)識(shí)與內(nèi)存塊標(biāo)識(shí)之間的對(duì)應(yīng)關(guān)系;內(nèi)存釋放單元304具體用于:當(dāng)確定需要釋放為應(yīng)用模塊用戶分配的任一內(nèi)存塊時(shí),釋放該內(nèi)存塊,并根據(jù)內(nèi)存關(guān)系表以及該內(nèi)存塊標(biāo)識(shí),確定該內(nèi)存塊標(biāo)識(shí)對(duì)應(yīng)的表項(xiàng),刪除該表項(xiàng)中存儲(chǔ)的該內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息;然后,將該表項(xiàng)添加到閑鏈表中。
[0067]在一種可能的實(shí)施方式中,本發(fā)明實(shí)施例提供的裝置中,處理單元306通過如下方式確定還存在該應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息:當(dāng)處理單元306確定內(nèi)存管理鏈表的忙鏈表中存在應(yīng)用模塊用戶標(biāo)識(shí)與內(nèi)存塊屬性信息之間的對(duì)應(yīng)關(guān)系時(shí),處理單元306確定還存在該應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息。
[0068]在一種可能的實(shí)施方式中,本發(fā)明實(shí)施例提供的裝置中,內(nèi)存分配單元302還用于:在忙鏈表的每一表項(xiàng)中記錄應(yīng)用模塊用戶申請(qǐng)的內(nèi)存塊所處理的業(yè)務(wù)信息;處理單元306確定還存在該應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息之后,還用于:將記錄有該記錄信息的表項(xiàng)中記錄的應(yīng)用模塊用戶申請(qǐng)的內(nèi)存塊所處理的業(yè)務(wù)信息進(jìn)行轉(zhuǎn)存。
[0069]本發(fā)明實(shí)施例提供的裝置中,在忙鏈表的每一表項(xiàng)中記錄應(yīng)用模塊用戶申請(qǐng)的內(nèi)存塊所處理的業(yè)務(wù)信息,當(dāng)需要釋放應(yīng)用模塊用戶時(shí),若忙鏈表中任一表項(xiàng)中仍然存儲(chǔ)有該應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息,則該應(yīng)用模塊用戶占用的內(nèi)存塊存在內(nèi)存泄露,則將該記錄有記錄信息的表項(xiàng)中記錄的應(yīng)用模塊用戶申請(qǐng)的內(nèi)存塊所處理的業(yè)務(wù)信息進(jìn)行轉(zhuǎn)存,便于后續(xù)內(nèi)存泄露定位。
[0070]在一種可能的實(shí)施方式中,本發(fā)明實(shí)施例提供的裝置中,預(yù)先設(shè)置多個(gè)內(nèi)存管理鏈表,并且,處理單元306還用于:當(dāng)接入多個(gè)應(yīng)用模塊用戶時(shí),對(duì)多個(gè)應(yīng)用模塊用戶進(jìn)行分組,得到多個(gè)應(yīng)用模塊用戶組,建立應(yīng)用模塊用戶組與內(nèi)存管理鏈表之間的映射關(guān)系;處理單元306通過如下方式確定還存在該應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息:處理單元306確定該應(yīng)用模塊用戶所在的應(yīng)用模塊用戶組,并根據(jù)應(yīng)用模塊用戶組與內(nèi)存管理鏈表之間的映射關(guān)系,確定應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存管理鏈表,當(dāng)確定該內(nèi)存管理鏈表的忙鏈表中存在該應(yīng)用模塊用戶標(biāo)識(shí)與內(nèi)存塊屬性信息之間的對(duì)應(yīng)關(guān)系時(shí),確定還存在該應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息。
[0071]本發(fā)明實(shí)施例提供的裝置中,當(dāng)預(yù)先設(shè)置多個(gè)內(nèi)存管理鏈表,并且接入的應(yīng)用模塊用戶為多個(gè)時(shí),對(duì)多個(gè)應(yīng)用模塊用戶進(jìn)行分組,得到多個(gè)應(yīng)用模塊用戶組,建立應(yīng)用模塊用戶組與內(nèi)存管理鏈表之間的映射關(guān)系,則可以通過如下方式確定還存在該應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息:確定該應(yīng)用模塊用戶所在的應(yīng)用模塊用戶組,并根據(jù)所述映射關(guān)系,確定應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存管理鏈表,當(dāng)確定該內(nèi)存管理鏈表的忙鏈表中存在應(yīng)用模塊用戶標(biāo)識(shí)與內(nèi)存塊屬性信息之間的對(duì)應(yīng)關(guān)系時(shí),確定還存在該應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息,確定應(yīng)用模塊用戶所在的應(yīng)用模塊用戶組,并根據(jù)映射關(guān)系確定該應(yīng)用模塊用戶組對(duì)應(yīng)的內(nèi)存管理鏈表,在該內(nèi)存管理鏈表中的忙鏈表中查找是否存在應(yīng)用模塊用戶標(biāo)識(shí)與內(nèi)存塊屬性信息之間的對(duì)應(yīng)關(guān)系,從而避免在預(yù)先設(shè)置的多個(gè)內(nèi)存管理鏈表中查找是否存在應(yīng)用模塊用戶標(biāo)識(shí)與內(nèi)存塊屬性信息之間的對(duì)應(yīng)關(guān)系,縮小內(nèi)存泄露的檢測(cè)范圍,提高內(nèi)存泄露的檢測(cè)效率。
[0072]本發(fā)明實(shí)施例提供的內(nèi)存管理裝置,可以集成在網(wǎng)絡(luò)設(shè)備中,也可以集成在網(wǎng)絡(luò)設(shè)備的內(nèi)存管理模塊中,其中,內(nèi)存分配單元302、內(nèi)存釋放單元304和處理單元306均可以采用CPU處理器等。
[0073]綜上所述,本發(fā)明實(shí)施例提供的一種內(nèi)存管理方法及裝置,接收到應(yīng)用模塊用戶申請(qǐng)內(nèi)存的請(qǐng)求消息時(shí),根據(jù)該請(qǐng)求消息為應(yīng)用模塊用戶分配一個(gè)內(nèi)存塊,建立該內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息,當(dāng)確定需要釋放該內(nèi)存塊時(shí),釋放該內(nèi)存塊,并且刪除該內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息,當(dāng)需要釋放應(yīng)用模塊用戶時(shí),若確定還存在該應(yīng)用模塊用戶對(duì)應(yīng)的內(nèi)存塊被該應(yīng)用模塊用戶占用的記錄信息,則釋放該記錄信息中記錄的被該應(yīng)用模塊用戶占用的內(nèi)存塊,也即檢測(cè)到內(nèi)存泄露時(shí),及時(shí)釋放泄露的內(nèi)存,避免由于內(nèi)存泄露導(dǎo)致單板故障、業(yè)務(wù)異常,而且實(shí)現(xiàn)簡(jiǎn)單高效。
[0074]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器和光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0075]本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的