[发明专利]在运行时对堆数据进行池分配的方法有效
| 申请号: | 200910243917.3 | 申请日: | 2009-12-25 |
| 公开(公告)号: | CN101763308A | 公开(公告)日: | 2010-06-30 |
| 发明(设计)人: | 王振江;武成岗 | 申请(专利权)人: | 中国科学院计算技术研究所 |
| 主分类号: | G06F12/02 | 分类号: | G06F12/02 |
| 代理公司: | 北京泛华伟业知识产权代理有限公司 11280 | 代理人: | 王勇 |
| 地址: | 100190 北*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 运行 数据 进行 分配 方法 | ||
1.一种在运行时对堆数据进行池分配的方法,包括:
步骤1)、接收堆数据的内存池分配请求;
步骤2)、考察调用点上下文,将包含在包装函数中的所述调用点的地 址和调用最上层包装函数的调用点的地址加入变长调用链;
步骤3)、分析从变长调用链所分配的堆数据对象的指针信息,对于从 该变长调用链所分配的堆数据对象A和从另一变长调用链所分配的堆数 据对象B具有相同的类型,并且所述A的指针保存在所述B的某个域中 的情况,以及从该变长调用链所分配的堆数据对象A的指针记录在一组对 象C的某个域里,而从另一变长调用链所分配的堆数据对象B的指针也保 存在这组对象C的同一个域里,并且所述A和B的类型相同的情况,所 述A和B具有紧密关系,为所述A和B分配同一个内存池,为不具有紧 密关系的堆数据对象分配不同的内存池;
步骤4)、从所述内存池中为所述堆数据分配空间。
2.根据权利要求1所述的在运行时对堆数据进行池分配的方法,其 特征在于,所述的步骤3)中所述为不具有紧密关系的堆数据对象分配不 同的内存池包括:从该变长调用链所分配的堆数据对象不和从任何其它变 长调用链所分配的堆数据对象共用一个内存池,新建一个内存池。
3.根据权利要求1或2所述的在运行时对堆数据进行池分配的方法, 其特征在于,所述的步骤2)包括:
步骤2-1)、用当前的调用点的地址查找包装函数表,构造变长调用链; 所述包装函数表记录了已知的包装函数的信息,进一步包括:
步骤2-1-1)、初始化变长调用链为空;
步骤2-1-2)、将当前调用点的地址加入变长调用链中;
步骤2-1-3)、如果当前调用点的地址在包装函数表中,则把上一层调 用点变为当前调用点,然后重新执行步骤2-1-2),否则,执行步骤2-2);
步骤2-2)、用所述变长调用链查找映射表,在无法从所述映射表中找 到与该变长调用链所对应的内存池的信息时,执行步骤2-3),否则,执行 步骤4);所述映射表保存了变长调用链与内存池之间的对应关系;
步骤2-3)、根据调用点的地址上下文确定变长调用链,并更新所述的 包装函数表,进一步包括:
步骤2-3-1)、初始化这次内存分配请求的变长调用链为空;
步骤2-3-2)、将当前调用点的地址加入变长调用链中;
步骤2-3-3)、如果分配的内存对象的指针没有被存到全局变量或堆中 某个位置,而被当前调用点所在的函数返回到上一层调用点时,把当前调 用点的地址写入所述包装函数表中,上一层调用点变为当前调用点,然后 重新执行步骤2-3-2),否则执行步骤3)。
4.根据权利要求3所述的在运行时对堆数据进行池分配的方法,其 特征在于,所述的步骤3)还包括:
将所述变长调用链与为该变长调用链所分配的内存池之间的对应关 系更新到所述映射表中。
5.根据权利要求1、2或4所述的在运行时对堆数据进行池分配的方 法,其特征在于,所述的步骤4)包括:
步骤4-1)、池分配器统计所述内存池的分配次数;
步骤4-2)、当内存池的分配次数小于第一门限时,使用系统内存分配 器进行分配,否则,执行下一步;
步骤4-3)、内存池的分配次数已经达到了第一门限,进一步判断之前 分配的对象大小是否超过了第二门限,当超过时,使用系统内存分配器进 行分配,当没有超过时,从段中分配。
6.根据权利要求5所述的在运行时对堆数据进行池分配的方法,其 特征在于,所述的从段中分配包括:
步骤4-3-1)、当内存池的分配次数刚达到设定门限后,该内存池从系 统申请一块段;
步骤4-3-2)、该内存池需要分配对象时,从段中分配;
步骤4-3-3)、如果当前的段使用完毕,则申请一个新段;
步骤4-3-4)、当一个段中的对象都被释放后,段被系统回收。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910243917.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:语义脉络文档查询方法
- 下一篇:半导体元器件自动分离机
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置





