一種用于實時流媒體傳輸系統(tǒng)的內(nèi)存管理方法
【專利摘要】本發(fā)明公開了一種用于實時流媒體傳輸系統(tǒng)的內(nèi)存管理方法,包括如下步驟:內(nèi)存空間預申請步驟:預申請一塊大的內(nèi)存空間;內(nèi)存空間處理步驟:將內(nèi)存空間分割為若干小內(nèi)存塊,對小內(nèi)存塊進行處理;內(nèi)存空間使用步驟:以隊列的方式申請或釋放小內(nèi)存塊;內(nèi)存空間釋放步驟:在退出系統(tǒng)時,釋放內(nèi)存空間。本發(fā)明具有以下有益效果:在系統(tǒng)啟動時預申請一塊大的內(nèi)存空間供系統(tǒng)工作時使用,避免了由于內(nèi)存的頻繁申請而造成的系統(tǒng)損耗;對申請的內(nèi)存空間進行相應的管理,使得內(nèi)存空間使用井然有序,且通過編排序列號的方式,使得內(nèi)存出現(xiàn)問題時,很容易定位到錯誤內(nèi)存的位置,有利于系統(tǒng)的維護。
【專利說明】一種用于實時流媒體傳輸系統(tǒng)的內(nèi)存管理方法
【技術(shù)領域】
[0001]本發(fā)明屬于內(nèi)存管理【技術(shù)領域】,具體涉及一種用于實時流媒體傳輸系統(tǒng)的內(nèi)存管理方法。
【背景技術(shù)】
[0002]傳統(tǒng)的內(nèi)存處理采用用時申請,不用時釋放的方式;而實時流媒體傳輸系統(tǒng)由于其自身的特點,在工作時需要頻繁申請內(nèi)存,由此會帶來相應的系統(tǒng)損耗。同時,系統(tǒng)在進行大量內(nèi)存處理時,一旦發(fā)生內(nèi)存泄露,很難對出現(xiàn)問題的內(nèi)存進行定位?;诂F(xiàn)有技術(shù)中的上述缺陷,有必要提出一種內(nèi)存管理的方法,對實時流媒體傳輸系統(tǒng)的內(nèi)存申請進行有效的管理,以克服上述技術(shù)缺陷。
【發(fā)明內(nèi)容】
[0003]為了克服現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明提供一種用于實時流媒體傳輸系統(tǒng)的內(nèi)存管理方法,具體的技術(shù)方案如下:
一種用于實時流媒體傳輸系統(tǒng)的內(nèi)存管理方法,包括如下步驟:
內(nèi)存空間預申請步驟:在啟動實時流媒體傳輸系統(tǒng)時,預申請一塊大小為NXM個字節(jié)的內(nèi)存空間;其中N是指預設的分配系數(shù),該分配系數(shù)為整數(shù);M是指系統(tǒng)的MTU值;
內(nèi)存空間處理步驟:將預申請獲得的內(nèi)存空間以MTU值為單位分割為N個小內(nèi)存塊;對N個小內(nèi)存塊進行排序,并分配相應的序列號;將N個小內(nèi)存塊依次放入隊列;
內(nèi)存空間使用步驟:當系統(tǒng)申請小內(nèi)存塊時,從隊列的隊首取出,進行處理;當系統(tǒng)釋放小內(nèi)存塊時,從隊列的隊尾放回,完成釋放;
內(nèi)存空間釋放步驟:在退出系統(tǒng)時,釋放內(nèi)存空間。
[0004]作為優(yōu)化方案,預申請的內(nèi)存空間的大小為可用物理內(nèi)存的50%。
[0005]作為優(yōu)化方案,在內(nèi)存空間處理步驟中,將N個小內(nèi)存塊根據(jù)對應的內(nèi)存地址的先后順序進行排序。
[0006]作為優(yōu)化方案,內(nèi)存空間使用步驟進一步包括:當系統(tǒng)出現(xiàn)內(nèi)存問題時,通過相應小內(nèi)存塊的序列號,判斷出對應的出現(xiàn)錯誤的內(nèi)存地址,完成錯誤內(nèi)存的定位。
[0007]作為優(yōu)化方案,在內(nèi)存空間釋放步驟之前,還包括內(nèi)存空間補充步驟:
當內(nèi)存空間隊列內(nèi)的內(nèi)存不夠滿足使用時,重復執(zhí)行內(nèi)存空間預申請步驟和內(nèi)存空間處理步驟,再申請一塊內(nèi)存空間,然后再執(zhí)行內(nèi)存空間使用步驟。
[0008]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:
(1)本發(fā)明在系統(tǒng)啟動時預申請一塊大的內(nèi)存空間供系統(tǒng)工作時使用,避免了由于內(nèi)存的頻繁申請而造成的系統(tǒng)損耗;
(2)對申請的內(nèi)存空間進行相應的管理,使得內(nèi)存空間使用井然有序,且通過編排序列號的方式,使得內(nèi)存出現(xiàn)問題時,很容易定位到錯誤內(nèi)存的位置,有利于系統(tǒng)的維護;
(3 )本發(fā)明的步驟簡單明了,易于實現(xiàn)?!緦@綀D】
【附圖說明】
[0009]圖1為本發(fā)明的總流程圖;
圖2為實施例1的示意圖。
【具體實施方式】
[0010]下面結(jié)合附圖以實施例的方式詳細描述本發(fā)明。
[0011]實施例1:
如圖1所示,一種用于實時流媒體傳輸系統(tǒng)的內(nèi)存管理方法,包括如下步驟:
步驟S101,內(nèi)存空間預申請步驟:在啟動所述實時流媒體傳輸系統(tǒng)時,預申請一塊大小為NXM個字節(jié)的內(nèi)存空間;其中N是指預設的分配系數(shù),該分配系數(shù)為整數(shù)…是指系統(tǒng)的MTU值。
[0012]預申請的內(nèi)存空間的大小受限于分配給系統(tǒng)運行的物理內(nèi)存的總大小,一般來說將預申請的內(nèi)存空間的大小設置為物理內(nèi)存的50%為宜,若內(nèi)存空間的大小到達物理內(nèi)存的70%-80%,則占用了過多的內(nèi)存資源,物理內(nèi)存沒有足夠的預留空間執(zhí)行其他任務,不利用系統(tǒng)整體的運行。
[0013]預申請的內(nèi)存空間的大小還受限于系統(tǒng)采用的網(wǎng)絡傳輸方式,由于實時流媒體傳輸系統(tǒng)往往采用UDP協(xié)議(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)的方式進行流數(shù)據(jù)傳輸,這種傳輸方式本身決定了單個數(shù)據(jù)包的大小不超過MTU值。其中,MTU (MaximumTransmission Unit)是指最大傳輸單元,MTU值是一個系統(tǒng)默認值。在MTU值確定的情況下,分配系數(shù)N的大小決定了預申請的內(nèi)存空間的大小。分配系數(shù)N的大小可根據(jù)系統(tǒng)運行的終端的特點來決定,例如,對于PC客戶端或手機客戶端的使用,應當申請較小的內(nèi)存,一般來說將分配系數(shù)N的值設為100比較合適;而對于流媒體服務器的使用,應當申請較大的內(nèi)存,具體與流媒體服務器支持的最大客戶端并發(fā)通道的數(shù)量,假設流媒體服務器最大支持1000個并發(fā)通道,則相應的將分配系數(shù)N的值設為1000X 100,也就是100000比較合適。當然,需要說明的是,以上僅為本發(fā)明的一種較佳的實施方式,僅作參考,本發(fā)明并不對分配系數(shù)N的大小做具體限制,可根據(jù)實際情況進行設置。
[0014]步驟S102,內(nèi)存空間處理步驟:將預申請獲得的內(nèi)存空間以所述MTU值為單位分割為N個小內(nèi)存塊;對N個小內(nèi)存塊進行排序,并分配相應的序列號;將N個小內(nèi)存塊依次放入隊列。
[0015]結(jié)合圖2可以很清楚地理解本步驟的處理流程,將大的內(nèi)存空間分片為若干小內(nèi)存塊,每個小內(nèi)存塊的大小等于MTU值,每次系統(tǒng)申請內(nèi)存時,都提供一塊MTU值大小的小內(nèi)存塊,符合實時流媒體傳輸系統(tǒng)的自身特點。對所有小內(nèi)存塊進行排序、分配序列號并按序放入隊列等操作是為了實現(xiàn)錯誤內(nèi)存的快速定位。在本實施例中,將N個小內(nèi)存塊根據(jù)對應的內(nèi)存地址的先后順序進行排序,但此僅為舉例說明,也可采用其他的排序方式。
[0016]步驟S103,內(nèi)存空間使用步驟:當系統(tǒng)申請小內(nèi)存塊時,從隊列的隊首取出,進行處理;當系統(tǒng)釋放小內(nèi)存塊時,從隊列的隊尾放回,完成釋放。當系統(tǒng)出現(xiàn)內(nèi)存問題時,通過相應小內(nèi)存塊的序列號,判斷出對應的出現(xiàn)錯誤的內(nèi)存地址,完成錯誤內(nèi)存的定位。
[0017]本發(fā)明提供的內(nèi)存管理方法通過隊列的方式將預申請的內(nèi)存空間提供給系統(tǒng)使用,基于隊列先入先出的特點,申請時,系統(tǒng)從隊首取出小內(nèi)存塊,釋放時,系統(tǒng)從隊尾放回小內(nèi)存塊。這樣能夠保證內(nèi)存空間中各個小內(nèi)存塊的使用和釋放按序進行。而由于事先為小內(nèi)存塊分配了序列號,當系統(tǒng)出現(xiàn)內(nèi)存問題時,可通過序列號查到到對應的內(nèi)存地址,便于定位。
[0018]步驟S104,內(nèi)存空間釋放步驟:在退出系統(tǒng)時,釋放所述內(nèi)存空間。
[0019]實施例2:
本實施例與實施例1的區(qū)別在于:在內(nèi)存空間釋放步驟之前,還包括步驟S201,內(nèi)存空間補充步驟:
當所述內(nèi)存空間隊列內(nèi)的內(nèi)存不夠滿足使用時,重復執(zhí)行內(nèi)存空間預申請步驟和內(nèi)存空間處理步驟,再申請一塊內(nèi)存空間,然后再執(zhí)行內(nèi)存空間使用步驟。
[0020]本實施例是在實施例1的基礎上所做的改進,以解決預申請的內(nèi)存空間不足的問題,采用與實施例1相同的方式再預申請一塊新的內(nèi)存空間,以滿足系統(tǒng)需求。
[0021]還是以實施例1中舉的例子進行說明,假設流媒體服務器最大支持1000個并發(fā)通道,在本實施例中,不將分配系數(shù)N的值設為1000 X 100,而是取10%,將分配系數(shù)N的值設為100X 100,即10000。理由在于,1000是并發(fā)通道的最大支持數(shù),不可能1000個通道同時工作,若一次性申請N為100000的內(nèi)存空間,大部分內(nèi)存空間不會被使用,從而造成內(nèi)存的浪費。因此,將N的值減小為10000,首次申請內(nèi)存空間時不申請過多的內(nèi)存,若首次申請的內(nèi)存不夠用時,重復內(nèi)存空間預申請步驟和內(nèi)存空間處理步驟,再申請一塊同樣大小的內(nèi)存空間,以此類推,若內(nèi)存空間還不夠用,可以繼續(xù)申請。就以上舉的例子來看,最多可以申請十塊同樣的內(nèi)存空間,對內(nèi)存的直接申請次數(shù)并不頻繁,且能大大提高內(nèi)存的利用率,避免內(nèi)存浪費。此外,采用本實施例提供的內(nèi)存管理方法,每次申請的內(nèi)存空間大小均相同,且處理和使用方式也相同,方法簡單實用;而現(xiàn)有的內(nèi)存管理方法,每次申請的內(nèi)存空間的大小均不相同,容易造成內(nèi)存浪費,且難以維護。
[0022]本實施例的其他技術(shù)特征與實施例1基本相同,在此不再贅述。
[0023]結(jié)合上述兩個實施例可知,本發(fā)明的有益效果在于:
首先,僅在系統(tǒng)啟動時預申請一塊大的內(nèi)存空間或內(nèi)存空間不足時再進行預申請,系統(tǒng)工作時使用預申請的內(nèi)存空間,而不直接向內(nèi)存進行申請,減少了大量的內(nèi)存處理,避免了由于內(nèi)存的頻繁申請而造成的系統(tǒng)損耗。
[0024]其次,采用隊列的方式實現(xiàn)系統(tǒng)對內(nèi)存空間中小內(nèi)存塊的申請,使得內(nèi)存空間使用井然有序;且通過編排序列號的方式,使得內(nèi)存出現(xiàn)問題時,很容易定位到錯誤內(nèi)存的位置,有利于系統(tǒng)的維護。
[0025]以上公開的僅為本申請的幾個具體實施例,但本申請并非局限于此任何本領域的技術(shù)人員能思之的變化,都應落在本申請的保護范圍內(nèi)。
【權(quán)利要求】
1.一種用于實時流媒體傳輸系統(tǒng)的內(nèi)存管理方法,其特征在于,包括如下步驟: 內(nèi)存空間預申請步驟:在啟動所述實時流媒體傳輸系統(tǒng)時,預申請一塊大小為NXM個字節(jié)的內(nèi)存空間;其中N是指預設的分配系數(shù),該分配系數(shù)為整數(shù);M是指系統(tǒng)的MTU值;內(nèi)存空間處理步驟:將預申請獲得的內(nèi)存空間以所述MTU值為單位分割為N個小內(nèi)存塊;對N個小內(nèi)存塊進行排序,并分配相應的序列號;將N個小內(nèi)存塊依次放入隊列; 內(nèi)存空間使用步驟:當系統(tǒng)申請小內(nèi)存塊時,從隊列的隊首取出,進行處理;當系統(tǒng)釋放小內(nèi)存塊時,從隊列的隊尾放回,完成釋放; 內(nèi)存空間釋放步驟:在退出系統(tǒng)時,釋放所述內(nèi)存空間。
2.根據(jù)權(quán)利要求1所述的一種用于實時流媒體傳輸系統(tǒng)的內(nèi)存管理方法,其特征在于,預申請的內(nèi)存空間的大小為可用物理內(nèi)存的50%。
3.根據(jù)權(quán)利要求1所述的一種用于實時流媒體傳輸系統(tǒng)的內(nèi)存管理方法,其特征在于,在內(nèi)存空間處理步驟中,將N個小內(nèi)存塊根據(jù)對應的內(nèi)存地址的先后順序進行排序。
4.根據(jù)權(quán)利要求1所述的一種用于實時流媒體傳輸系統(tǒng)的內(nèi)存管理方法,其特征在于,所述內(nèi)存空間使用步驟進一步包括:當系統(tǒng)出現(xiàn)內(nèi)存問題時,通過相應小內(nèi)存塊的序列號,判斷出對應的出現(xiàn)錯誤的內(nèi)存地址,完成錯誤內(nèi)存的定位。
5.根據(jù)權(quán)利要求1所述的一種用于實時流媒體傳輸系統(tǒng)的內(nèi)存管理方法,其特征在于,在所述內(nèi)存空間釋放步驟之前,還包括內(nèi)存空間補充步驟: 當所述內(nèi)存空間隊列內(nèi)的內(nèi)存不夠滿足使用時,重復執(zhí)行內(nèi)存空間預申請步驟和內(nèi)存空間處理步驟,再申請一塊內(nèi)存空間,然后再執(zhí)行內(nèi)存空間使用步驟。
【文檔編號】G06F12/02GK103942150SQ201410128074
【公開日】2014年7月23日 申請日期:2014年4月1日 優(yōu)先權(quán)日:2014年4月1日
【發(fā)明者】陳強, 戴立言, 李慶瑜 申請人:上海網(wǎng)達軟件股份有限公司