买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:之江实验室
摘要:本发明公开一种基于笛卡尔树的高层次综合动态内存管理方法及装置,包括:基于笛卡尔树进行动态内存管理,所述笛卡尔树的节点对应空闲内存块,用[addr,size]表示,其中addr表示内存块地址,size表示内存块大小。根据内存管理请求,在笛卡尔树上查找到目标节点,即目标空闲内存块,并对目标空闲内存块进行划分或者融合操作;完成操作后,对笛卡尔树的节点进行位置调整,以满足笛卡尔树的约束条件。本发明利用笛卡尔树对两个属性都有序的优势,实现了高效灵活的动态内存分配和回收,提高了高层次综合语言的开发效率。
主权项:1.一种基于笛卡尔树的高层次综合动态内存管理方法,其特征在于,包括:基于笛卡尔树进行动态内存管理,所述笛卡尔树的节点对应空闲内存块,用[addr,size]表示,其中addr表示内存块地址,size表示内存块大小;根据内存管理请求,在笛卡尔树上查找到目标节点,即目标空闲内存块,并对目标空闲内存块进行划分或者融合操作;完成操作后,对笛卡尔树的节点进行位置调整,以满足笛卡尔树的约束条件;所述内存管理请求包括内存分配请求和内存回收请求;若内存管理请求为内存分配请求,则对目标空闲内存块进行划分操作;若内存管理请求为内存回收请求,则对目标空闲内存块进行融合操作;所述在笛卡尔树上查找到目标节点,包括:若内存管理请求为内存分配请求,从笛卡尔树的根节点开始遍历,查找到满足内存分配需求的节点,即为目标节点;所述对目标空闲内存块进行划分操作,包括:将目标节点的size值减去内存分配需求大小;所述笛卡尔树的约束条件,包括:size属性按层有序非递增或非递减,addr属性中序有序递增或递减;通过以下三种策略中的任意一种或多种查找到满足内存分配需求的节点:第一策略:若根节点满足内存分配需求,直接将根节点作为目标节点;第二策略:查找到满足内存分配需求的拥有最小size的节点;所述查找到满足内存分配需求的拥有最小size的节点包括:从笛卡尔树的根节点开始遍历,将根节点作为查找变量n,判断当前节点的size是否大于所需内存块大小,若当前节点的size小于所需内存块大小,当前节点的父节点就会被作为目标节点;若当前节点等于所需内存块大小,则当前节点作为目标节点;若当前节点的size大于所需内存块大小,则查找当前节点的左右两子节点,若两子节点的size均小于所需内存块大小,则当前节点作为目标节点;若有子节点的size等于所需内存块大小,则该子节点作为目标节点;若只有其中一个子节点的size大于所需内存块大小,则选择较大的子节点作为下一轮循环中新的循环变量n,直至找到目标节点;若两子节点的size均大于所需内存块大小,则两子节点均作为下一轮循环中新的循环变量n,直至找到目标节点,取两子节点作为查找变量各自找到的目标节点中size最小作为最终目标节点;第三策略:从笛卡尔树的根节点开始遍历,将根节点作为查找变量n,判断当前节点的size是否大于所需内存块大小,若当前节点的size小于所需内存块大小,当前节点的父节点就会被作为目标节点;若当前节点等于所需内存块大小,则当前节点作为目标节点;若当前节点的size大于所需内存块大小,则查找当前节点的左右两子节点,若两子节点的size均小于所需内存块大小,则当前节点作为目标节点;若有子节点的size等于所需内存块大小,则该子节点作为目标节点;若只有其中一个子节点的size大于所需内存块大小,则选择较大的子节点作为下一轮循环中新的循环变量n,直至找到目标节点;若两子节点的size均大于所需内存块大小,则选择较小的子节点作为下一轮循环中新的循环变量n,直至找到目标节点;还包括动态内存匹配策略选择机制;所述动态内存匹配策略选择机制,包括:将当前堆内存的碎片化程度和内存分配申请的空间大小共同作为衡量指标,决定要选择的策略;所述碎片化程度通过以下公式计算: 其中,SizeFree是堆内存中一块空闲内存的大小,NCT是笛卡尔树上的节点数量;若所需内存块大小大于Frag的m倍时,则采样第二策略,m>1;若所需内存块大小小于Frag时采用第一策略;若所需内存块大小介于Frag值的1倍和m倍之间,则采用第三策略。
全文数据:
权利要求:
百度查询: 之江实验室 一种基于笛卡尔树的高层次综合动态内存管理方法及装置
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。