本申請涉及內存管理,尤其涉及一種內存分配管理方法、裝置和設備。
背景技術:
1、當程序運行過程中需要額外的內存來做數據存儲或者運算的時候一般需要向系統申請內存使用,使用完成之后需要及時釋放申請的內存,如果由于設計缺陷出現沒有及時釋放申請的內存的情況,就會導致此塊內存一直被占用。服務器中bmc是基于arm的嵌入式linux系統,運行內存一般有限,如果出現重復申請沒有釋放的情況的話就會導致系統剩余內存越來越少,直到bmc因內存泄露而導致崩潰。
技術實現思路
1、有鑒于此,本申請提供一種內存分配管理方法、裝置和設備,用以實現可靠的內存分配管理,以避免內存泄露風險。
2、具體地,本申請是通過如下技術方案實現的:
3、本申請第一方面提供一種內存分配管理方法,所述方法包括:
4、對預先申請好的內存區域進行二次分割,得到多個內存塊集合;其中,所述多個內存塊集合中的各個內存塊集合中的內存塊的數量不同,每個內存塊集合中的各個內存塊的大小相同,不同內存塊集合中的內存塊的大小不同;
5、針對每個內存塊集合,將該內存塊集合中的內存塊串接成鏈表,得到該內存塊集合對應的鏈表;其中,該內存塊集合對應的鏈表用于管理該內存塊集合的狀態和分配情況;
6、根據每個內存塊集合對應的鏈表申請內存或釋放內存,以將要管理的內存和系統的堆內存隔離,避免內存泄露風險。
7、本申請第二方面提供一種內存分配管理裝置,所述裝置包括分割模塊、串接模塊和隔離模塊;其中,
8、所述分割模塊,用于對預先申請好的內存區域進行二次分割,得到多個內存塊集合;其中,所述多個內存塊集合中的各個內存塊集合中的內存塊的數量不同,每個內存塊集合中的各個內存塊的大小相同,不同內存塊集合中的內存塊的大小不同;
9、所述串接模塊,用于針對每個內存塊集合,將該內存塊集合中的內存塊串接成鏈表,得到該內存塊集合對應的鏈表;其中,該內存塊集合對應的鏈表用于管理該內存塊集合的狀態和分配情況;
10、所述隔離模塊,用于根據每個內存塊集合對應的鏈表申請內存或釋放內存,以將要管理的內存和系統的堆內存隔離,避免內存泄露風險。
11、本申請第三方面提供一種內存分配管理設備,包括存儲器、處理器及存儲在所述存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述程序時實現本申請第一方面提供的任一項所述方法的步驟。
12、本申請第四方面提供一種計算機可讀存儲介質,其上存儲有計算機程序,所述程序被處理器執行時實現本申請第一方面提供的任一項所述方法的步驟。
13、本申請提供的內存分配管理方法、裝置和設備,通過對預先申請好的內存區域進行二次分割,得到多個內存塊集合,進而針對每個內存塊集合,將該內存塊集合中的內存塊串接成鏈表,得到該內存塊集合對應的鏈表,這樣,便可以根據每個內存塊集合對應的鏈表申請內存或釋放內存,可以確保內存塊集合中的內存分配和釋放與系統的堆內存隔離,可以更好地控制和管理內存塊的使用,從而降低內存泄漏的風險,保證內存使用時的安全性。
1.一種內存分配管理方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,內存塊集合對應的鏈表包括表頭信息和該內存塊集合中的各個內存塊的內存塊信息;所述表頭信息用于表征該內存塊集合的總容量、該內存塊集合中的內存塊的總數量、該內存塊集合中當前空閑的空閑內存塊的數量以及該內存塊集合中的第一個內存塊的地址信息;所述內存塊信息包括內存塊的大小、內存塊的狀態、指向該內存塊的指針以及指向下一個內存塊的指針。
3.根據權利要求2所述的方法,其特征在于,所述方法還包括:
4.根據權利要求3所述的方法,其特征在于,對各個內存塊集合進行內存資源調整,包括:
5.根據權利要求3或4所述的方法,其特征在于,所述對各個內存塊集合進行內存資源調整,包括:
6.根據權利要求1所述的方法,其特征在于,所述根據每個內存塊集合對應的鏈表申請內存,包括:
7.根據權利要求1或6所述的方法,其特征在于,所述根據各個內存塊集合對應的鏈表釋放內存,包括:
8.根據權利要求6所述的方法,其特征在于,根據待申請的內存的目標大小,確定與該目標大小匹配的目標鏈表,包括:
9.一種內存分配管理裝置,其特征在于,所述裝置包括分割模塊、串接模塊和隔離模塊;其中,
10.一種內存分配管理設備,其特征在于,包括存儲器、處理器及存儲在所述存儲器上并可在處理器上運行的計算機程序,其特征在于,所述處理器執行所述程序時實現權利要求1-8任一項所述方法的步驟。