当前位置: 首页 > 专利查询>英特尔公司专利>正文

避免高性能内存管理系统中的垃圾收集技术方案

技术编号:31226184 阅读:17 留言:0更新日期:2021-12-08 09:32
系统、装置和方法可提供技术来检测线程的创建、将内存区域专用于与所述线程相关联的对象以及响应于所述线程的终止而进行所述内存区域的回收。在一个示例中,所述内存区域为堆区域,并且所述回收避开关于所述堆区域的垃圾收集过程的至少暂停阶段和复制阶段。收集过程的至少暂停阶段和复制阶段。收集过程的至少暂停阶段和复制阶段。

【技术实现步骤摘要】
【国外来华专利技术】避免高性能内存管理系统中的垃圾收集


[0001]实施例通常涉及计算架构的内存管理。更具体地,实施例涉及避免高性能内存管理系统中的垃圾收集。

技术介绍

[0002]在操作中,计算机程序可向各个对象分配内存以执行在执行程序时涉及的操作。当计算机程序未能从不再使用的对象释放内存时,可用内存不必要地减少,这可对性能具有负面影响且可导致系统故障(例如,当额外内存不可用时)。尽管诸如管理的运行时应用程序之类的程序可使用“垃圾收集器”以自动地回收不再使用的内存,但仍存在相当大的改进空间。例如,传统的垃圾收集器可能在处理器使用、用户接口的未预测的暂停、额外的功率消耗(例如减少的电池寿命)等方面对性能具有负面影响。
附图说明
[0003]通过阅读以下说明书和所附权利要求书且通过参考附图,实施例的各种优势对于所属领域的技术人员而言将是显而易见的,其中:
[0004]图1是根据实施例的在创建线程之后的分配空间的示例的图示;
[0005]图2是根据实施例的将内存区域专用于与线程相关联的对象的示例的流程图;
[0006]图3是根据实施例的在内存回收之后的分配空间的示例的图示;
[0007]图4是根据实施例的内存回收的示例的流程图;
[0008]图5和图6是根据实施例的管理内存的方法的示例的流程图;
[0009]图7是根据实施例的性能增强的计算系统的示例的框图;
[0010]图8是根据实施例的半导体封装装置的示例的图示;
[0011]图9是根据实施例的处理器的示例的框图;并且
[0012]图10是根据实施例的基于多处理器的计算系统的示例的框图。
具体实施方式
[0013]现在转到图1,在创建线程之后示出分配空间20(20a

20e)。在实施例中,分配空间20为堆内存的部分,该堆内存用于在创建和终止(例如破坏)线程的计算机程序的运行时操作期间进行动态内存分配。堆内存还可包括其他内存空间(未示出),例如大对象空间(例如存储相对较大的原始阵列和/或字串阵列)、图像空间(例如存储可执行文件、资源文件等)、共享空间(例如存储由多个过程共享的对象)、非移动空间(例如存储长期对象)等等。在一个示例中,分配空间20存储可能在垃圾收集过程期间被作为目标的相对较短期的对象。此外,线程可对应于用户接口活动,用户接口活动提供丰富的特殊效应并导致短期对象消耗相对较大量的内存。
[0014]在图示的示例中,分配空间20包括第一区域20a(“区域1”)、第二区域20b(“区域2”)、第三区域20c(“区域3”)、第四区域20d(“区域4”)和第五区域20e(“区域5”)。示出的区
域的数目仅出于论述目的且可视情况而变化。图示的分配空间20的区域单独地专用于特定线程和/或活动。例如,第二区域20b和第三区域20c可专用于第一线程(“线程1”),第四区域20d可能专用于第二线程(“线程2”),等等。在实施例中,第二区域20b和第三区域20c中的对象可在与第一线程相关联的函数之间共享,而无需进行额外复制操作。类似地,第四区域20d中的对象可在与第二线程相关联的函数之间共享,而无需进行额外复制操作。如将更详细地论述的,图示的方案使得能够增强性能。
[0015]图2示出其中内存分配器(例如框架层运行时管理器)检测将创建新线程的函数24(回调方法“onCreate()”)的流程图22。在图示的示例中,内存分配器通过发出第一命令26(“StartMemoryRegion()”)来触发将内存区域专用于线程。当应用程序调用函数24时,与新线程相关联的所有对象(例如,“对象a”、“对象b”)将被分配到专用内存区域。除调用函数24之外,内存分配器可在调用线程对象中设置标志以激活基于线程的分配。在实施例中,内存分配器还将线程映射到专用内存区域。下面的表I示出了此类映射的示例。
[0016]UI线程ID区域3区域2,区域34区域4
[0017]表I
[0018]当函数24完成分配对象时,图示的内存分配器发出第二命令28(“StopMemoryRegion()”)以中止将对象专用于讨论中的内存区域。内存分配器还可清除调用线程对象中的标志,以响应于线程的终止而去激活基于线程的分配。在实施例中,内存分配器还清除适当的线程到区域表映射条目。下面示出了用于实施第一命令26和第二命令28的伪码的示例。
[0019][0020]如果所选择区域的大小不够,那么额外的未使用区域可专用于与线程相关联的对象。在实施例中,内存分配器检查线程是否在线程分配模式下。如果否,那么内存分配器可切换为正常分配模式。否则,内存分配器查找表以找出特定区域标识符并试图将对象分配在指定区域中。如果区域已满,那么内存分配器可为线程分配另一区域并相应地更新表。下面示出了用于实施对额外区域的选择的伪码的示例。
[0021][0022]继续参考图1和图3,线程的终止可触发专用于线程的所有区域的回收。例如,线程1的终止导致第二区域20b和第三区域20c中的所有对象被回收。在实施例中,基于来自应用程序的高级(例如上层)信息检测线程的终止。特别说明的是,可避开垃圾收集器(GC)操作,诸如其中暂停所有其他线程(例如,以允许GC收集根对象集并确定要回收哪些区域)的暂停阶段。在图示的方案中还可避开其他GC操作,诸如其中GC扫描从根集开始的所有活对象并将那些对象复制到未使用区域(例如目的地区域)的复制阶段。实际上,如果线程仅产生短期对象,那么执行GC操作的频率可能接近零。因此,在处理器使用、用户接口的未预测暂停、额外功率消耗(例如减少的电池寿命)等方面,性能增强。
[0023]图4示出了其中内存分配器检测将终止现有线程的函数32(回调方法“onDestroy()”)的流程图33。在实施例中,函数32由以下项引起:太多应用程序在后台运行、应用程序关闭且从活跃应用程序列表中去除等。在图示的示例中,内存分配器通过发出命令34(“ReclaimMemoryRegion()”)来触发专用于线程的一个或多个内存区域的回收。当应用程序调用函数32时,将回收专用于线程的所有内存区域。在实施例中,内存分配器通过在表(例如表I)中查找适当线程标识符来定位针对线程的所选择区域。区域可一次回收一个。下面示出了用于实施命令34的伪码的示例。
[0024][0025]图5示出了管理内存的方法40。方法40通常可以在诸如前面提及的内存分配器(图
1)之类的内存分配器中实施。更具体地,方法40可以以存储在以下项中的一组逻辑指令被实施为一个或多个模块:机器或计算机可读存储介质(例如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪速存储器等)、可配置逻辑(例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD))、使用电路技术(例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管

晶体管逻辑(TTL)技术)的固定本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种性能增强的计算系统,包括:显示器;处理器,耦合到所述显示器;以及存储器,耦合到所述处理器,所述存储器包括一组可执行程序指令,所述指令在由所述处理器执行时使得所述计算系统:检测线程的创建;将第一内存区域专用于与所述线程相关联的对象;并且响应于所述线程的终止而进行所述第一内存区域的第一回收。2.根据权利要求1所述的计算系统,其中所述第一内存区域为堆区域,并且所述第一回收将避开关于所述堆区域的垃圾收集过程的暂停阶段和复制阶段。3.根据权利要求1所述的计算系统,其中,为了将所述第一内存区域专用于与所述线程相关联的所述对象,所述可执行程序指令在被执行时使得所述计算系统:激活基于线程的分配;并且将所述线程映射到所述第一内存区域。4.根据权利要求3所述的计算系统,其中所述可执行程序指令在被执行时使得所述计算系统:响应于所述线程的所述终止而去激活所述基于线程的分配;并且将所述线程从所述第一内存区域解除映射。5.根据权利要求1所述的计算系统,其中所述可执行程序指令在被执行时使得所述计算系统:响应于确定所述第一内存区域已满而将第二内存区域专用于与所述线程相关联的所述对象;并且响应于所述线程的所述终止而进行所述第二内存区域的第二回收。6.根据权利要求1至5中任一项所述的计算系统,其中所述线程用于对应于用户接口活动,并且其中所述显示器用于视觉地呈现与所述用户接口活动相关联的信息。7.一种半导体装置,包括:一个或多个衬底;以及逻辑,耦合到所述一个或多个衬底,其中所述逻辑至少部分地实施于可配置逻辑或固定功能硬件逻辑中的一个或多个中,耦合到所述一个或多个衬底的所述逻辑用于:检测线程的创建;将第一内存区域专用于与所述线程相关联的对象;并且响应于所述线程的终止而进行所述第一内存区域的第一回收。8.根据权利要求7所述的装置,其中所述第一内存区域为堆区域,并且所述第一回收将避开关于所述堆区域的垃圾收集过程的暂停阶段和复制阶段。9.根据权利要求7所述的装置,共中,为了将所述第一内存区域专用于与所述线程相关联的所述对象,耦合到所述一个或多个衬底的所述逻辑用于:激活基于线程的分配;并且将所述线程映射到所述第一内存区域。10.根据权利要求9所述的装置,其中耦合到所述一个或多个衬底的所述逻辑用于:
响应于所述线程的所述终止而去激活所述基于线程的分配;并且将所述线程从所述第一内存区域解除映射。11.根据权利要求7所述的装置,其中耦合到所述一个或多个衬底的所述逻辑用于:响应于确定所述第一内存区域已满而将第二内存区域专用于与所述线程相关联的所述对象...

【专利技术属性】
技术研发人员:董耀祖施奇铭解超杨斌周振
申请(专利权)人:英特尔公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1