[發(fā)明專利]提高系統(tǒng)內(nèi)存利用率的方法有效
| 申請?zhí)枺?/td> | 201510638512.5 | 申請日: | 2015-09-29 |
| 公開(公告)號: | CN105354079B | 公開(公告)日: | 2019-06-07 |
| 發(fā)明(設(shè)計)人: | 李小慶 | 申請(專利權(quán))人: | 上海斐訊數(shù)據(jù)通信技術(shù)有限公司 |
| 主分類號: | G06F9/46 | 分類號: | G06F9/46 |
| 代理公司: | 杭州千克知識產(chǎn)權(quán)代理有限公司 33246 | 代理人: | 周希良 |
| 地址: | 201616 *** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 提高 系統(tǒng) 內(nèi)存 利用率 方法 | ||
本發(fā)明涉及系統(tǒng)內(nèi)存領(lǐng)域,尤其涉及一種提高系統(tǒng)內(nèi)存利用率的方法。一種提高系統(tǒng)內(nèi)存利用率的方法,應(yīng)用于Linux系統(tǒng)中,方法包括:步驟S1,緩存釋放線程調(diào)用堆棧收縮函數(shù);步驟S2,創(chuàng)建新進程后,在新進程的數(shù)據(jù)結(jié)構(gòu)中添加一定時器,并將定時器的到期函數(shù)設(shè)置為堆棧收縮函數(shù);步驟S3,當(dāng)Linux系統(tǒng)的內(nèi)存不足時,定時器開始計時;步驟S4,在定時器計時期間,Linux系統(tǒng)中的所有用戶進程調(diào)用堆棧收縮函數(shù),以釋放所有用戶進程堆棧中的內(nèi)存;步驟S5,在定時器到期時,Linux系統(tǒng)的CPU執(zhí)行堆棧收縮函數(shù),以釋放新進程堆棧中的內(nèi)存;其中,步驟S4中的所有用戶進程不包括新進程。
技術(shù)領(lǐng)域
本發(fā)明涉及系統(tǒng)內(nèi)存領(lǐng)域,尤其涉及一種提高系統(tǒng)內(nèi)存利用率的方法。
背景技術(shù)
堆棧是內(nèi)存的一個工作區(qū),會隨著程序運行的需要而增長或縮小,隨著計算機水平的不斷提高,軟件規(guī)模越來越龐大,函數(shù)嵌套調(diào)用的層次越來越深,導(dǎo)致堆棧空間的波動幅度增大。如果沒有啟用Linux交換技術(shù),堆棧空間中沒有使用的內(nèi)存就被浪費了。很多嵌入式設(shè)備使用Linux系統(tǒng),而且沒有啟用Linux交換技術(shù),堆棧空間中沒有使用的內(nèi)存就被浪費了,系統(tǒng)中的進程數(shù)量較多的時候,浪費的內(nèi)存就更多了。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中內(nèi)存利用率較低等問題,本發(fā)明提供了一種提高系統(tǒng)內(nèi)存利用率的方法,及時釋放堆棧空間中沒有使用的內(nèi)存,提高Linux系統(tǒng)內(nèi)存利用率。
本發(fā)明采用如下技術(shù)方案:
一種提高系統(tǒng)內(nèi)存利用率的方法,應(yīng)用于Linux系統(tǒng)中,所述方法包括:
步驟S1,緩存釋放線程調(diào)用堆棧收縮函數(shù);
步驟S2,創(chuàng)建新進程后,在所述新進程的數(shù)據(jù)結(jié)構(gòu)中添加一定時器,并將所述定時器的到期函數(shù)設(shè)置為堆棧收縮函數(shù);
步驟S3,當(dāng)所述Linux系統(tǒng)的內(nèi)存不足時,所述定時器開始計時;
步驟S4,在所述定時器計時期間,所述Linux系統(tǒng)中的所有用戶進程調(diào)用所述堆棧收縮函數(shù),以釋放所有所述用戶進程堆棧中的內(nèi)存;
步驟S5,在所述定時器到期時,所述Linux系統(tǒng)的CPU執(zhí)行所述堆棧收縮函數(shù),以釋放所述新進程堆棧中的內(nèi)存;其中,
所述步驟S4中的所述所有用戶進程不包括所述新進程。
優(yōu)選的,所述方法中:
所述定時器的定時時間為1-10秒。
優(yōu)選的,所述步驟S1具體包括:
步驟S11,在所述堆棧收縮函數(shù)中,增加對所述所有用戶線程調(diào)用所述堆棧收縮函數(shù)的代碼。
優(yōu)選的,所述步驟S2具體包括:
步驟S21,在Linux進程數(shù)據(jù)結(jié)構(gòu)中增加堆棧時間域,Linux內(nèi)核創(chuàng)建所述新進程時,在所述堆棧時間域上添加所述定時器。
優(yōu)選的,所述步驟S2具體包括:
步驟S22:通過add timer函數(shù)添加所述定時器。
優(yōu)選的,所述方法還包括:
步驟S6:于所述步驟S5之后,所述緩存釋放線程運行后,對所述所有用戶進程的用戶態(tài)堆棧內(nèi)存情況進行檢查并調(diào)用所述堆棧收縮函數(shù),以釋放所述用戶態(tài)堆棧內(nèi)存。
優(yōu)選的,所述方法還包括:
步驟S7:于所述步驟S6之后,當(dāng)堆棧指針連續(xù)N次向上穿過頁邊界地址時,所述CPU中斷并執(zhí)行所述堆棧收縮函數(shù),以釋放當(dāng)前運行進程堆棧的內(nèi)存;其中,
所述N為預(yù)設(shè)值,同時所述N為正整數(shù)并且大于1。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于上海斐訊數(shù)據(jù)通信技術(shù)有限公司,未經(jīng)上海斐訊數(shù)據(jù)通信技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201510638512.5/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





