[發(fā)明專利]一種內(nèi)存塊整理方法、介質(zhì)及計(jì)算設(shè)備有效
| 申請(qǐng)?zhí)枺?/td> | 202210197927.3 | 申請(qǐng)日: | 2022-03-02 |
| 公開(kāi)(公告)號(hào): | CN114265670B | 公開(kāi)(公告)日: | 2022-09-23 |
| 發(fā)明(設(shè)計(jì))人: | 蘭兆千 | 申請(qǐng)(專利權(quán))人: | 阿里云計(jì)算有限公司 |
| 主分類號(hào): | G06F9/455 | 分類號(hào): | G06F9/455 |
| 代理公司: | 北京博思佳知識(shí)產(chǎn)權(quán)代理有限公司 11415 | 代理人: | 申亞輝 |
| 地址: | 310024 浙江省*** | 國(guó)省代碼: | 浙江;33 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 內(nèi)存 整理 方法 介質(zhì) 計(jì)算 設(shè)備 | ||
本說(shuō)明書披露的多個(gè)實(shí)施例提供了一種內(nèi)存塊整理方法、介質(zhì)及計(jì)算設(shè)備。在需要的時(shí)機(jī),選擇堆外內(nèi)存中的一些非空閑內(nèi)存塊作為待整理內(nèi)存塊,這樣的內(nèi)存塊需要滿足:被停止寫入數(shù)據(jù)且包含未失效數(shù)據(jù)。將待整理內(nèi)存塊中的未失效數(shù)據(jù)復(fù)制一份至空閑內(nèi)存塊。將復(fù)制的未失效數(shù)據(jù)的讀取地址進(jìn)行修改,使得后續(xù)針對(duì)未失效數(shù)據(jù)的讀取操作訪問(wèn)復(fù)制后的未失效數(shù)據(jù)所在的非空閑內(nèi)存塊。這樣一來(lái),只需要等待正在讀取待整理內(nèi)存塊中的未失效數(shù)據(jù)的讀取線程完成當(dāng)次讀取之后,就可以清空待整理內(nèi)存塊,使得待整理內(nèi)存塊成為空閑內(nèi)存塊,從而實(shí)現(xiàn)對(duì)該待整理內(nèi)存塊的回收。
技術(shù)領(lǐng)域
本說(shuō)明書多個(gè)實(shí)施例涉及信息技術(shù)領(lǐng)域,尤其涉及一種內(nèi)存塊整理方法、介質(zhì)及計(jì)算設(shè)備。
背景技術(shù)
JAVA虛擬機(jī)中運(yùn)行的數(shù)據(jù)讀寫進(jìn)程通常會(huì)將數(shù)據(jù)寫入JAVA虛擬機(jī)的堆上內(nèi)存中。現(xiàn)有的JAVA虛擬機(jī)的堆上內(nèi)存的管理機(jī)制為,堆上內(nèi)存中包括young區(qū)與old區(qū),數(shù)據(jù)讀寫進(jìn)程先將數(shù)據(jù)一律寫入young區(qū)中的內(nèi)存塊,young區(qū)中的內(nèi)存塊被使用完之后,將young區(qū)中的未失效數(shù)據(jù)轉(zhuǎn)移到old區(qū)中的內(nèi)存塊,將young區(qū)清空。如果old區(qū)中的內(nèi)存塊將要被使用完,則觸發(fā)對(duì)old區(qū)中的內(nèi)存塊的回收(Garbage Collector,GC)。
由于JAVA虛擬機(jī)的堆上內(nèi)存的管理機(jī)制假設(shè)越早寫入的數(shù)據(jù)也會(huì)越早失效(通常將這種假設(shè)稱為時(shí)間假設(shè)),因此,由young區(qū)轉(zhuǎn)移至old區(qū)的未失效數(shù)據(jù)是比較少的,不太容易觸發(fā)對(duì)old區(qū)中的內(nèi)存塊的GC。
基于此,需要一種數(shù)據(jù)讀寫進(jìn)程可以不依賴于JAVA虛擬機(jī)的堆上內(nèi)存管理機(jī)制的技術(shù)方案。
發(fā)明內(nèi)容
本說(shuō)明書的多個(gè)實(shí)施例提供一種內(nèi)存塊整理方法、介質(zhì)及計(jì)算設(shè)備,以便盡可能避免數(shù)據(jù)讀寫進(jìn)程中斷。
本說(shuō)明書多個(gè)實(shí)施例提供技術(shù)方案如下:
根據(jù)本說(shuō)明書多個(gè)實(shí)施例的第一方面,提出了一種內(nèi)存塊整理方法,其中,數(shù)據(jù)讀寫進(jìn)程運(yùn)行在JAVA虛擬機(jī)中,所述JAVA虛擬機(jī)的堆外內(nèi)存中包括若干空閑內(nèi)存塊與若干非空閑內(nèi)存塊,所述進(jìn)程創(chuàng)建的每個(gè)寫入線程向自身所專用的非空閑內(nèi)存塊中寫入數(shù)據(jù),所述進(jìn)程創(chuàng)建的每個(gè)讀取線程占用至少一個(gè)非空閑內(nèi)存塊進(jìn)行數(shù)據(jù)讀取;所述方法應(yīng)用于所述進(jìn)程創(chuàng)建的內(nèi)存塊整理線程,所述方法包括:
在確定滿足整理觸發(fā)條件的情況下,確定N個(gè)待整理內(nèi)存塊;其中,N>1,每個(gè)待整理內(nèi)存塊為被停止寫入數(shù)據(jù)且包含未失效數(shù)據(jù)的非空閑內(nèi)存塊;
將該N個(gè)待整理內(nèi)存塊中的未失效數(shù)據(jù)復(fù)制到M個(gè)空閑內(nèi)存塊,M<N,使得該M個(gè)空閑內(nèi)存塊成為非空閑內(nèi)存塊,并對(duì)復(fù)制的每個(gè)未失效數(shù)據(jù)進(jìn)行讀取地址修改,包括:將該未失效數(shù)據(jù)在復(fù)制前所在內(nèi)存塊中的讀取地址,修改為該未失效數(shù)據(jù)在復(fù)制后所在內(nèi)存塊中的讀取地址;
針對(duì)每個(gè)待整理內(nèi)存塊,在確定不存在正在讀取該待整理內(nèi)存塊中的未失效數(shù)據(jù)的讀取線程的情況下,清空該待整理內(nèi)存塊,使得該待整理內(nèi)存塊成為空閑內(nèi)存塊。
根據(jù)本說(shuō)明書多個(gè)實(shí)施例的第二方面,提出了一種內(nèi)存塊整理裝置,其中,數(shù)據(jù)讀寫進(jìn)程運(yùn)行在JAVA虛擬機(jī)中,所述JAVA虛擬機(jī)的堆外內(nèi)存中包括若干空閑內(nèi)存塊與若干非空閑內(nèi)存塊,所述進(jìn)程創(chuàng)建的每個(gè)寫入線程向自身所專用的非空閑內(nèi)存塊中寫入數(shù)據(jù),所述進(jìn)程創(chuàng)建的每個(gè)讀取線程占用至少一個(gè)非空閑內(nèi)存塊進(jìn)行數(shù)據(jù)讀取;所述裝置應(yīng)用于所述進(jìn)程創(chuàng)建的內(nèi)存塊整理線程,所述裝置包括:
確定模塊,在確定滿足整理觸發(fā)條件的情況下,確定N個(gè)待整理內(nèi)存塊;其中,N>1,每個(gè)待整理內(nèi)存塊為被停止寫入數(shù)據(jù)且包含未失效數(shù)據(jù)的非空閑內(nèi)存塊;
第一整理模塊,將該N個(gè)待整理內(nèi)存塊中的未失效數(shù)據(jù)復(fù)制到M個(gè)空閑內(nèi)存塊,M<N,使得該M個(gè)空閑內(nèi)存塊成為非空閑內(nèi)存塊,并對(duì)復(fù)制的每個(gè)未失效數(shù)據(jù)進(jìn)行讀取地址修改,包括:將該未失效數(shù)據(jù)在復(fù)制前所在內(nèi)存塊中的讀取地址,修改為該未失效數(shù)據(jù)在復(fù)制后所在內(nèi)存塊中的讀取地址;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于阿里云計(jì)算有限公司,未經(jīng)阿里云計(jì)算有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210197927.3/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 一種數(shù)據(jù)庫(kù)讀寫分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





