[发明专利]提高系统内存利用率的方法有效
申请号: | 201510638512.5 | 申请日: | 2015-09-29 |
公开(公告)号: | CN105354079B | 公开(公告)日: | 2019-06-07 |
发明(设计)人: | 李小庆 | 申请(专利权)人: | 上海斐讯数据通信技术有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 杭州千克知识产权代理有限公司 33246 | 代理人: | 周希良 |
地址: | 201616 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 提高 系统 内存 利用率 方法 | ||
本发明涉及系统内存领域,尤其涉及一种提高系统内存利用率的方法。一种提高系统内存利用率的方法,应用于Linux系统中,方法包括:步骤S1,缓存释放线程调用堆栈收缩函数;步骤S2,创建新进程后,在新进程的数据结构中添加一定时器,并将定时器的到期函数设置为堆栈收缩函数;步骤S3,当Linux系统的内存不足时,定时器开始计时;步骤S4,在定时器计时期间,Linux系统中的所有用户进程调用堆栈收缩函数,以释放所有用户进程堆栈中的内存;步骤S5,在定时器到期时,Linux系统的CPU执行堆栈收缩函数,以释放新进程堆栈中的内存;其中,步骤S4中的所有用户进程不包括新进程。
技术领域
本发明涉及系统内存领域,尤其涉及一种提高系统内存利用率的方法。
背景技术
堆栈是内存的一个工作区,会随着程序运行的需要而增长或缩小,随着计算机水平的不断提高,软件规模越来越庞大,函数嵌套调用的层次越来越深,导致堆栈空间的波动幅度增大。如果没有启用Linux交换技术,堆栈空间中没有使用的内存就被浪费了。很多嵌入式设备使用Linux系统,而且没有启用Linux交换技术,堆栈空间中没有使用的内存就被浪费了,系统中的进程数量较多的时候,浪费的内存就更多了。
发明内容
针对现有技术中内存利用率较低等问题,本发明提供了一种提高系统内存利用率的方法,及时释放堆栈空间中没有使用的内存,提高Linux系统内存利用率。
本发明采用如下技术方案:
一种提高系统内存利用率的方法,应用于Linux系统中,所述方法包括:
步骤S1,缓存释放线程调用堆栈收缩函数;
步骤S2,创建新进程后,在所述新进程的数据结构中添加一定时器,并将所述定时器的到期函数设置为堆栈收缩函数;
步骤S3,当所述Linux系统的内存不足时,所述定时器开始计时;
步骤S4,在所述定时器计时期间,所述Linux系统中的所有用户进程调用所述堆栈收缩函数,以释放所有所述用户进程堆栈中的内存;
步骤S5,在所述定时器到期时,所述Linux系统的CPU执行所述堆栈收缩函数,以释放所述新进程堆栈中的内存;其中,
所述步骤S4中的所述所有用户进程不包括所述新进程。
优选的,所述方法中:
所述定时器的定时时间为1-10秒。
优选的,所述步骤S1具体包括:
步骤S11,在所述堆栈收缩函数中,增加对所述所有用户线程调用所述堆栈收缩函数的代码。
优选的,所述步骤S2具体包括:
步骤S21,在Linux进程数据结构中增加堆栈时间域,Linux内核创建所述新进程时,在所述堆栈时间域上添加所述定时器。
优选的,所述步骤S2具体包括:
步骤S22:通过add timer函数添加所述定时器。
优选的,所述方法还包括:
步骤S6:于所述步骤S5之后,所述缓存释放线程运行后,对所述所有用户进程的用户态堆栈内存情况进行检查并调用所述堆栈收缩函数,以释放所述用户态堆栈内存。
优选的,所述方法还包括:
步骤S7:于所述步骤S6之后,当堆栈指针连续N次向上穿过页边界地址时,所述CPU中断并执行所述堆栈收缩函数,以释放当前运行进程堆栈的内存;其中,
所述N为预设值,同时所述N为正整数并且大于1。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海斐讯数据通信技术有限公司,未经上海斐讯数据通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510638512.5/2.html,转载请声明来源钻瓜专利网。