[发明专利]一种内存分配调度的方法和装置在审
申请号: | 201611260418.1 | 申请日: | 2016-12-30 |
公开(公告)号: | CN106649134A | 公开(公告)日: | 2017-05-10 |
发明(设计)人: | 周胜利 | 申请(专利权)人: | 郑州云海信息技术有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 北京集佳知识产权代理有限公司11227 | 代理人: | 罗满 |
地址: | 450018 河南省郑州市*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 分配 调度 方法 装置 | ||
技术领域
本发明属于操作系统技术领域,特别是涉及一种内存分配调度的方法和装置。
背景技术
在LINUX系统中,OS只负责处理应用层的内存请求,但却不负责内存的回收,在上层应用对内存资源的使用较为频繁时,经常会造成内存泄漏和内存溢出等问题。其中,在申请内存和释放内存方式方面,堆和栈有着很大的不同。栈是编译器自动申请的,例如在主函数里面,要声明一个int变量a,那么编译器就自动开辟一块内存来存放变量a。而堆则不相同,是由程序员手动申请的,只要程序员感觉程序此处需要用到多大的内存空间,那么就使用malloc或者new来申请固定大小的内存使用。栈的空间在程序结束的时候由系统或者编译器自动释放,而堆则在程序结束前由程序员手动使用free或delete释放,或者忘记手动释放,由系统在程序结束的时候自动回收。由于内存区域总是有限的,不能无限制地分配下去,而且程序应尽量节省资源,所以当分配的内存区域不用时,则要释放它,以便其他的变量或程序使用。
一般我们常说的内存泄漏是指堆内存的泄漏,堆内存使用完后必须进行释放,否则这块内存就不能再次使用,我们就说这块内存泄漏了;内存溢出即用户在对其数据缓冲区操作时,超过了其缓冲区的边界,尤其是对缓冲区进行写操作时,缓冲区的溢出很可能导致程序的异常。
发明内容
为解决上述问题,本发明提供了一种内存分配调度的方法和装置,能够对系统内存进行统一的分配、管理、调度和监测,来实现内存的合理利用与回收,避免内存泄露或溢出导致的程序异常。
本发明提供的一种内存分配调度的方法,包括:
获取内存块并对其初始化;
利用内存分配API从所述内存块中分配内存,并向已分配的内存中添加控制信息;
利用audit检测线程每隔预设时间对已分配的内存进行检测,如果超时之后仍未释放则产生内存告警;
利用内存释放API释放使用完的内存。
优选的,在上述内存分配调度的方法中,
所述利用内存分配API从所述内存块中分配内存包括:
计算所需内存的大小;
设置functionbacktrace的级别;
设置内存的使用时间;
检索内存链表,返回内存地址。
优选的,在上述内存分配调度的方法中,
所述检索内存链表,返回内存地址包括:
如果所述内存链表中包含用户所需大小的内存,则直接返回内存地址;
否则将内存进行拆分出用户所需大小的内存,并将剩余的内存插入所述内存链表中。
优选的,在上述内存分配调度的方法中,
在所述利用内存分配API从所述内存块中分配内存之后,还包括:
将分配的内存清零。
优选的,在上述内存分配调度的方法中,
在所述利用内存分配API从所述内存块中分配内存之后,还包括:
利用API将数据从其他地址拷贝到已分配的内存中。
本发明提供的一种内存分配调度的装置,包括:
获取单元,用于获取内存块并对其初始化;
分配单元,用于利用内存分配API从所述内存块中分配内存,并向已分配的内存中添加控制信息;
检测单元,用于利用audit检测线程每隔预设时间对已分配的内存进行检测,如果超时之后仍未释放则产生内存告警;
释放单元,用于利用内存释放API释放使用完的内存。
优选的,在上述内存分配调度的装置中,
所述分配单元包括:
计算部件,用于计算所需内存的大小;
第一设置部件,用于设置functionbacktrace的级别;
第二设置部件,用于设置内存的使用时间;
检索部件,用于检索内存链表,返回内存地址。
优选的,在上述内存分配调度的装置中,
所述检索部件具体用于如果所述内存链表中包含用户所需大小的内存,则直接返回内存地址;否则将内存进行拆分出用户所需大小的内存,并将剩余的内存插入所述内存链表中。
优选的,在上述内存分配调度的装置中,
还包括:
清零单元,用于将分配的内存清零。
优选的,在上述内存分配调度的装置中,
还包括:
拷贝单元,用于利用API将数据从其他地址拷贝到已分配的内存中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑州云海信息技术有限公司,未经郑州云海信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611260418.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:椅子(DYY‑46)
- 下一篇:椅子(HXY6)