,當(dāng)SD0處于活躍態(tài)時,也有可能將SD0從內(nèi)存中移除,此時,SD0由活躍態(tài)轉(zhuǎn)換到不存在。
[0035]需要說明的是,本發(fā)明實(shí)施例在外部存儲器可以是磁盤文件,也可以是數(shù)據(jù)庫,也可以是其他存儲形式,本發(fā)明實(shí)施例在此不進(jìn)行限定和贅述。本發(fā)明實(shí)施例中將不活躍態(tài)的SD0移動到外部存儲器時,流式系統(tǒng)會為用戶提供接口,實(shí)現(xiàn)內(nèi)存中的數(shù)據(jù)與外部存儲器中的數(shù)據(jù)交換。
[0036]本發(fā)明實(shí)施例提供的內(nèi)存對象管理方法,通過檢測內(nèi)存中SD0的狀態(tài),若檢測到SD0的狀態(tài)為不活躍態(tài),則將SD0從內(nèi)存中移除,并將SD0移動到外部存儲器,實(shí)現(xiàn)自動檢測內(nèi)存中不活躍的流數(shù)據(jù)對象,避免了在實(shí)時流數(shù)據(jù)處理過程中,因長期運(yùn)行而造成大量不活躍的流數(shù)據(jù)對象長期占用內(nèi)存,從而避免了系統(tǒng)資源的浪費(fèi)。
[0037]圖3為本發(fā)明實(shí)施例二提供的面向流式處理系統(tǒng)的內(nèi)存對象管理方法流程圖。本發(fā)明實(shí)施例提供的方法為圖1所示實(shí)施例一提供方法的一種具體實(shí)現(xiàn)方式,如圖3所示,本發(fā)明實(shí)施例提供的內(nèi)存對象管理方法,包括:
[0038]S301:檢測內(nèi)存中所有SD0的數(shù)量是否達(dá)到第一預(yù)設(shè)閾值。
[0039]具體的,本發(fā)明實(shí)施例中基于空間的管理模式檢測SD0的狀態(tài),設(shè)定一個內(nèi)存中SD0的數(shù)量上限,即對內(nèi)存中SD0的數(shù)量設(shè)定一個第一預(yù)設(shè)閾值。通過檢測內(nèi)存中所有SD0的數(shù)量是否達(dá)到第一預(yù)設(shè)閾值,可以防止SD0無限制地占用內(nèi)存,實(shí)現(xiàn)對系統(tǒng)資源的保護(hù)。
[0040]需要說明的是,本發(fā)明實(shí)施例中的第一預(yù)設(shè)閾值根據(jù)實(shí)際應(yīng)用中流式系統(tǒng)的資源情況和SD0的大小而定,本發(fā)明實(shí)施例在此不進(jìn)行限定和贅述。
[0041]S302:若內(nèi)存中所有SD0的數(shù)量達(dá)到第一預(yù)設(shè)閾值,則檢測SD0是否是內(nèi)存中最近最少訪問的。
[0042]具體的,當(dāng)檢測到內(nèi)存中SD0的數(shù)量達(dá)到第一預(yù)設(shè)閾值時,則檢測SD0是否是內(nèi)存中最近最少訪問的。當(dāng)檢測到內(nèi)存中所有SD0的數(shù)量達(dá)到第一預(yù)設(shè)閾值,按照內(nèi)存中最近最少訪問順序移除SD0,可以在保護(hù)流式系統(tǒng)資源的前提下,為流水系統(tǒng)中的任務(wù)提供最低延遲。
[0043]需要說明的是,SD0容器可以對內(nèi)存中的所有SD0進(jìn)行排序,根據(jù)SD0在固定時間內(nèi)SD0的訪問情況對SD0進(jìn)行排序。內(nèi)存中最近最少訪問的SD0指的是在內(nèi)存中SD0在固定時間內(nèi)訪問最少的。
[0044]S303:若檢測到SD0是內(nèi)存中最近最少訪問的,則將SD0從內(nèi)存中移除,并將SD0移動到外部存儲器。
[0045]其中,若SD0是內(nèi)存中最近最少訪問的,則SD0的狀態(tài)為不活躍態(tài)。
[0046]具體的,當(dāng)內(nèi)存中SD0的數(shù)量達(dá)到上限時,將內(nèi)存中最近最少訪問的SD0從內(nèi)存中移除。
[0047]本發(fā)明實(shí)施例提供的內(nèi)存對象管理方法,通過檢測內(nèi)存中所有SD0的數(shù)量是否達(dá)到第一預(yù)設(shè)閾值,若內(nèi)存中所有SD0的數(shù)量達(dá)到第一預(yù)設(shè)閾值,則檢測SD0是否是內(nèi)存中最近最少訪問的,將內(nèi)存中最近最少訪問的SD0從內(nèi)存中移除,并將SD0移動到外部存儲器,實(shí)現(xiàn)基于空間的管理模式自動檢測內(nèi)存中不活躍的流數(shù)據(jù)對象,避免了在實(shí)時流數(shù)據(jù)處理過程中,因長期運(yùn)行而造成大量不活躍的流數(shù)據(jù)對象長期占用內(nèi)存,從而避免了系統(tǒng)資源的浪費(fèi)。
[0048]圖4為本發(fā)明實(shí)施例三提供的面向流式處理系統(tǒng)的內(nèi)存對象管理方法流程圖。本發(fā)明實(shí)施例提供的方法為圖1所示實(shí)施例一提供方法的另一種具體實(shí)現(xiàn)方式,如圖4所示,本發(fā)明實(shí)施例提供的內(nèi)存對象管理方法,包括:
[0049]S401:檢測SD0在預(yù)設(shè)時間內(nèi)是否被訪問。
[0050]具體的,本發(fā)明實(shí)施例中基于時間的管理模式檢測SD0的狀態(tài),設(shè)定一個超時時間,即設(shè)定一個預(yù)設(shè)時間,通過檢測SD0在預(yù)設(shè)時間內(nèi)是否被訪問來檢測SD0的狀態(tài)。
[0051]S402:若檢測到SD0在預(yù)設(shè)時間內(nèi)沒有被訪問,則將SD0從內(nèi)存中移除,并將SD0移動到外部存儲器。
[0052]其中,若檢測到SD0在預(yù)設(shè)時間內(nèi)沒有被訪問,則SD0的狀態(tài)為不活躍態(tài)。
[0053]具體的,當(dāng)檢測到SD0在預(yù)設(shè)時間內(nèi)沒有被訪問,則SD0的狀態(tài)為不活躍態(tài),將SD0從內(nèi)存中移除。可知,本發(fā)明實(shí)施例中基于時間的管理模式,按照SD0在預(yù)設(shè)時間內(nèi)是否被訪問移除SD0,將在預(yù)設(shè)時間內(nèi)沒有被訪問的SD0從內(nèi)存中移除。
[0054]本發(fā)明實(shí)施例提供的內(nèi)存對象管理方法,通過檢測SD0在預(yù)設(shè)時間內(nèi)是否被訪問,若檢測到SD0在預(yù)設(shè)時間內(nèi)沒有被訪問,則將SD0從內(nèi)存中移除,并將SD0移動到外部存儲器,實(shí)現(xiàn)基于時間的管理模式自動檢測內(nèi)存中不活躍的流數(shù)據(jù)對象,避免了在實(shí)時流數(shù)據(jù)處理過程中,因長期運(yùn)行而造成大量不活躍的流數(shù)據(jù)對象長期占用內(nèi)存,從而避免了系統(tǒng)資源的浪費(fèi)。
[0055]進(jìn)一步地,在圖4所示實(shí)施例中,在檢測SD0在預(yù)設(shè)時間內(nèi)是否被訪問之前,包括:
[0056]計(jì)算內(nèi)存中所有訪問次數(shù)小于第二預(yù)設(shè)閾值的SD0形成的滑動窗口的大小,將滑動窗口的大小作為預(yù)設(shè)時間;
[0057]具體的,采用公式delay (w, t) = hr (w, t) *dncisdci+(l_hr (w, t)) *dWd計(jì)算出擊中內(nèi)存的概率hr的大??;
[0058]采用公式hr = P(w, t)計(jì)算處滑動窗口 w的大?。?br>[0059]上述公式中,hr為擊中內(nèi)存的概率,擊中內(nèi)存指的是SD0是內(nèi)存中活躍態(tài)SD0的概率,t為時間,P(w, t)為采用窗口 w、在t時刻的統(tǒng)計(jì)函數(shù),delay為采用窗口 w、在t時刻的處理延遲;d_d。為直接從內(nèi)存中取出SD0并投入計(jì)算應(yīng)用時的處理延時;d lc]adS從外部存儲器取出并恢復(fù)SD0狀態(tài)時的處理延遲。
[0060]具體的,圖5為本發(fā)明實(shí)施例一提供的SD0滑動窗口示意圖,如圖5所示,本發(fā)明實(shí)施例中為開發(fā)者提供“合適的”SD0過期時間的計(jì)算方法,“合適的”過期時間是指在保證延遲用戶可接受的前提下,最大限度的降低內(nèi)存占用率。如圖5所示,可以將內(nèi)存中SD0看成是最近最少使用SD0鏈上的滑動窗口范圍內(nèi)的數(shù)據(jù),滑動窗口代表著SD0的過期時間。
[0061]需要說明的是,本發(fā)明實(shí)施例中的第二預(yù)設(shè)閾值根據(jù)實(shí)際應(yīng)用中流式系統(tǒng)的資源情況和SD0的訪問次數(shù)而定,本發(fā)明實(shí)施例在此不進(jìn)行限定和贅述。
[0062]在實(shí)際應(yīng)用中,可以測試得到直接從內(nèi)存中取出SD0并投入計(jì)算應(yīng)用時的處理延時dMsdC]和從外部存儲器取出并恢復(fù)SD0狀態(tài)時的處理延遲d Wd,根據(jù)測試得到的cL-和dWd采用公式 delay(w, t) = hr (w, t)*dnosdo+(l-hr (w, t)) *dWd可以得到采用窗口 w、在 t 時刻的處理延遲delay隨擊中內(nèi)存的概率hr變化的函數(shù)。給定一個用戶最大可接受的處理延遲delay,即可得到相應(yīng)的內(nèi)存的概率hr。采用擬合統(tǒng)計(jì)公式hr = P(w,t),可以得到隨時間t變化的滑動窗口 w的大小。
[0063]需要說明的是,在實(shí)際應(yīng)用中,滑動窗口的大小對內(nèi)存占用率和處理延遲具有一定的影響,具體為:增大滑動窗口,導(dǎo)致內(nèi)存中活躍對象的比例增大,內(nèi)存占用率與活躍對象比例呈正比,因此內(nèi)存占用率相應(yīng)增大;而處理延遲與內(nèi)存擊中率直接相關(guān),內(nèi)存擊中率受活躍對象比例和數(shù)據(jù)連續(xù)性兩方面共同影響,對于連續(xù)性穩(wěn)定的數(shù)據(jù),整體上內(nèi)存擊中率隨活躍對象比例增大而增大或不變,例如:當(dāng)數(shù)據(jù)隨機(jī)到達(dá)時,內(nèi)存擊中率與活躍對象比例呈正比關(guān)系,數(shù)據(jù)活躍比例一定時,數(shù)據(jù)的連續(xù)性高,內(nèi)存擊中率越大。用戶給定最大可接受的處理延遲,在每個時間點(diǎn)會對應(yīng)一組滑動窗口值,由于內(nèi)存占用隨滑動窗口的增大而增大,因此取這組滑動窗口值中最小值作滑動窗口的大小,即可達(dá)到在給定最大可接受處理延遲的前提下,將內(nèi)存占用降到最低。
[0064]需要說明的是,本發(fā)明實(shí)施例提供的面向流式處理系統(tǒng)的內(nèi)存對象管理方法為達(dá)到防止不活躍對象耗費(fèi)內(nèi)存