用于扩展应用虚拟机的对象存储区的方法和系统技术方案

技术编号:13983438 阅读:159 留言:0更新日期:2016-11-12 17:57
在这里描述的实施例包括用于通过扩展与应用虚拟机对应的对象存储区而改进应用虚拟机的实现的方法和系统。该方法包括从与应用虚拟机相关联的多个对象中标识可迁移对象的子集,其中可迁移对象的子集包括一个或多个对象,且多个对象被存储在包括分配用于应用虚拟机的存储器的一部分的对象存储区中。该方法还包括从可迁移对象的子集选择各个对象以从对象存储区迁移到永久数据存储区,其中永久数据存储区不同于对象存储区。该方法进一步包括使得各个对象从对象存储区迁移到永久数据存储区。

【技术实现步骤摘要】
【国外来华专利技术】
公开的实施例总的来说涉及应用虚拟机,且具体来说,涉及扩展应用虚拟机(例如,Java虚拟机的对象存储区(object storage)(例如,堆(heap))。
技术介绍
通常,Java虚拟机(“JVM”)的实例执行单个应用或者程序。JVM包括用于包括方法区域和堆的应用的多个运行时间数据区域。方法区域和堆两者在应用的所有线程之间共享。向堆分配预定义量的高速、高成本存储器(例如,DRAM)以用于存储由应用实例化(instantiate)的对象。但是,如果程序需要比可以使得可用的更多的堆空间,则JVM施加OutOfMemoryError(用尽存储器错误)。当前,使用虚拟存储器来通过利用大的交换(swap)文件而扩展堆。但是,该解决方案由于页粒度和交换算法而具有非常差的性能。
技术实现思路
公开的方法和系统通过使用低成本非易失性存储器(例如,闪存存储器)扩展应用虚拟机的对象存储区(例如,堆)而改进了应用虚拟机的性能。接着,这又帮助应用在虚拟机不施加(throwing)OutOfMemoryError和应用不由于分页(paging)堆而遭受差性能的情况下访问大量数据,同时提供相对于扩展DRAM的降低的成本和更高的数据容量。此外,以对应用或者程序最大限度地透明的方式扩展对象存储区。附图说明为了能够更详细地理解本公开,可以引用各种实施例的特征进行更具体的描述,在附图中图示了其中一些特征。但是,附图仅图示本公开的更相关的特征且因此不考虑限定,因为描述可能允许其他有效的特征。图1A-1B是图示根据某些实施例的应用虚拟机的实现的框图。图2A是图示根据某些实施例的存储器管理器的实现的框图。图2B是图示根据某些实施例的执行应用虚拟机的电子装置的实现的框图。图3是图示根据某些实施例的存储器分层的框图。图4A-4B是图示根据某些实施例的与应用虚拟机相关联的数据结构的实现的框图。图5图示根据某些实施例的与用于应用虚拟机的垃圾收集处理的实现相关联的数据结构的框图。图6A-6C图示根据某些实施例的管理与应用虚拟机相关联的对象的方法的流程图表示。图7A-7B图示根据某些实施例的管理与应用虚拟机相关联的对象的方法的流程图表示。根据惯例,附图中图示的各种特征可以不必是按比例描绘的。因此,各种特征的维度可以为了清楚任意地扩展或者缩小。另外,某些附图可以不绘出给定系统、方法或装置的所有组成部分。最后,相同的附图标记可以用于表示整个说明书和附图中相同的特征。具体实施方式在这里描述的各种实施例包括改进比如Java虚拟机(“JVM”)的应用虚拟机(有时也称为处理虚拟机)的可靠性和性能的方法、装置和/或系统。某些实施例包括用于将应用虚拟机的对象存储区(例如,堆)扩展为大容量、成本有效的永久数据存储区(storage)的方法、装置和/或系统。某些实施例包括管理与应用虚拟机相关联的对象的方法。在一些实施例中,由具有一个或多个处理器和操作地耦接到配置为管理永久数据存储区的存储器管理器的存储器的电子装置(例如,客户端装置或者服务器系统)执行或者操纵的应用虚拟机执行该方法。该方法包括从与应用虚拟机相关联的多个对象中标识可迁移(migratable)对象的子集,其中可迁移对象的子集包括一个或多个对象,且多个对象被存储在包括分配用于应用虚拟机的存储器的一部分的对象存储区中。该方法还包括从可迁移对象的子集中选择要从对象存储区迁移到操作地耦接到电子装置的永久数据存储区的各个对象,其中永久数据存储区不同于与电子装置相关联的存储器。该方法进一步包括使得各个对象从对象存储区迁移到永久数据存储区。某些实施例包括管理与应用虚拟机相关联的对象的方法。在一些实施例中,由具有一个或多个处理器和操作地耦接到配置为管理永久数据存储区的存储器管理器的存储器的电子装置(例如,客户端装置或者服务器系统)执行或者操纵的应用虚拟机执行该方法。该方法包括从与应用虚拟机相关联的多个对象中标识可迁移对象的子集,其中可迁移对象的子集包括一个或多个对象,且多个对象被存储在包括分配用于应用虚拟机的存储器的一部分的对象存储区中。该方法还包括:检测可迁移对象的子集中的第一对象的修改(或者创建);和响应于检测修改(或者创建),使得修改(或者创建)的第一对象迁移到操作地耦接到电子装置的永久数据存储区,其中永久数据存储区不同于与电子装置相关联的存储器。该方法进一步包括:从可迁移对象的子集中选择要从对象存储区迁移到永久数据存储区的第二对象。根据所选的第二对象不同于第一对象的确定,该方法包括使得所选的第二对象迁移到永久数据存储区。根据所选的第二对象是第一对象的确定,该方法包括放弃所选的第二对象的迁移。某些实施例包括电子系统或装置,其包括:一个或多个处理器;和存储要由一个或多个处理器执行的一个或多个程序,该一个或多个程序包括用于执行或者控制在这里描述的任何方法的实现的指令。某些实施例包括非瞬时计算机可读存储介质,存储用于由电子系统或装置的一个或多个处理器执行的一个或多个程序,该一个或多个程序包括用于执行在这里描述的任何方法的指令。某些实施例包括电子系统或装置,其包括:用于执行在这里描述的任何方法的操作的装置。在一些实施例中,应用虚拟机由电子系统或装置执行或者操纵。在这里描述许多细节为了提供附图中图示的示例实施例的全面理解。但是,可以没有许多细节地实践某些实施例,且权利要求的范围仅由在权利要求中特别地叙述的那些特征和方面所限定。此外,没有以详尽的细节描述公知的方法、组件和电路从而不会不必要地模糊的在这里描述的实施例的更相关的方面。图1A是图示根据某些实施例的应用虚拟机100A的实现的框图。例如,应用虚拟机100A图示用于各个应用或者程序的虚拟机的代表实例。为了便于讨论,应用虚拟机100A被描述为Java虚拟机(“JVM”)。但是,本领域技术人员将理解描述的实施例和在这里公开的方法也可以怎样应用于以多个解译语言中的任何解译语言(例如,Smalltalk、Java、Lisp、Scala、Ruby等)写的多个类似的应用虚拟机实现中的任何应用虚拟机实现。Java虚拟机的运行时间实例(instance)具有清楚的:为了运行一个Java应用或者程序。当Java应用开始时,创建运行时间实例,且当Java应用完成时,停止该实例。作为示例,如果用户在同一计算机上同时开始三个Java应用,则将创建三个Java虚拟机实例,其中三个Java应用在各个Java虚拟机实例内部运行。在一些实施例中,Java虚拟机实例通过调用某些初始类的main()方法来开始运行其唯一的应用。具有这种main()方法的任何类可以用作Java应用的开始点。应用的初始类的main()方法用作该应用的初始线程的开始点。初始线程可以孵化其他线程。在一些实施例中,线程达成两个风格:守护进程(daemon)和非守护进程(non-daemon)。守护进程线程通常是由虚拟机本身使用以用于后台处理的线程,比如执行垃圾收集的线程。但是,应用的初始线程,即在main()开始的线程是非守护进程线程。只要任何非守护线程仍然运行,Java应用就持续执行(虚拟机实例持续存在)。当Java应用的所有非守护进程线程终止时,虚拟机实例终止。图1A图示根据某些实施例的包括主要子系统和存储区的Jav本文档来自技高网...

【技术保护点】
一种管理与由具有一个或多个处理器和存储器的电子装置执行的应用虚拟机相关联的对象的方法,所述方法包括:从与应用虚拟机相关联的多个对象中标识可迁移对象的子集,其中所述可迁移对象的子集包括一个或多个对象,且所述多个对象被存储在包括分配用于应用虚拟机的存储器的一部分的对象存储区中;从可迁移对象的子集中选择要从对象存储区迁移到操作地耦接到电子装置的永久数据存储区的各个对象,其中,所述永久数据存储区不同于与所述电子装置相关联的存储器;和使得各个对象从对象存储区迁移到永久数据存储区。

【技术特征摘要】
【国外来华专利技术】2014.03.24 US 61/969,705;2014.07.23 US 14/339,0721.一种管理与由具有一个或多个处理器和存储器的电子装置执行的应用虚拟机相关联的对象的方法,所述方法包括:从与应用虚拟机相关联的多个对象中标识可迁移对象的子集,其中所述可迁移对象的子集包括一个或多个对象,且所述多个对象被存储在包括分配用于应用虚拟机的存储器的一部分的对象存储区中;从可迁移对象的子集中选择要从对象存储区迁移到操作地耦接到电子装置的永久数据存储区的各个对象,其中,所述永久数据存储区不同于与所述电子装置相关联的存储器;和使得各个对象从对象存储区迁移到永久数据存储区。2.如权利要求1所述的方法,进一步包括:在选择各个对象之前,确定是否满足一个或多个预定条件;和其中,所述选择包括根据满足一个或多个预定条件的确定来选择各个对象。3.如权利要求1-2中任意一个所述的方法,其中,标识可迁移对象的子集包括根据一个或多个预定义标准从对象存储区中的多个对象中标识对象。4.如权利要求1-2中任意一个所述的方法,其中,标识可迁移对象的子集包括从对象存储区中的与一个或多个指定类相关联的多个对象中标识对象。5.如权利要求1-4中任意一个所述的方法,其中,选择要迁移的各个对象包括至少部分地基于预定替换算法来选择要迁移的各个对象。6.如权利要求1-5中任意一个所述的方法,其中,使得各个对象迁移包括发送请求到与永久数据存储区相关联的存储器管理器以迁移各个对象。7.如权利要求1-6中任意一个所述的方法,其中,使得各个对象迁移包括在永久数据存储区中存储各个对象之前使得各个对象存储在与存储器管理器相关联的存储器中,所述存储器管理器与永久数据存储区相关联。8.如权利要求1-7中的任意一个所述的方法,其中,使得各个对象迁移包括对于各个对象在对象存储区中生成存根。9.如权利要求1-7中的任意一个所述的方法,其中,使得各个对象迁移包括在重定向表中的与各个对象相关联的条目中设置迁移位。10.如权利要求1-7中的任意一个所述的方法,其中,使得各个对象迁移包括用指示各个对象已经迁移的保留值替换对各个对象的引用。11.如权利要求1-10中的任意一个所述的方法,其中,在迁移到永久数据存储区之后,各个对象不引用对象存储区中的任意对象。12.如权利要求11所述的方法,进一步包括:确定永久数据存储区中的由对象存储区中的活动对象中的活动引用所引用的一组已迁移对象;比较所确定的该组已迁移对象与已迁移对象的地图以标识不由对象存储区中的活动对象中的活动引用所引用的一组已迁移对象;和标记标识的该组已迁移对象用于垃圾收集。13.如权利要求1-10中的任意一个所述的方法,进一步包括:确定永久数据存储区中的由活动对象的活动引用所引用的一组已迁移对象,所述活动对象包括对象存储区中的活动对象和永久数据存储区中的活动对象;比较所确定的该组已迁移对象与已迁移对象的地图以标识不由对象存储区中的活动对象中的活动引用所引用的已迁移对象;和标记标识的该组已迁移对象用于垃圾收集;其中,确定该组已迁移对象包括:从永久数据存储区检索对象数据,所述对象数据包括由其他活动对象中的活动引用所引用的对象的副本或者活动对象的部分;和在检索的对象数据中标识对对象存储区中的和/或永久数据存储区中的活动对象的引用。14.如权利要求13所述的方法,其中,检索对象数据包括在与对象存储区不同的各自的存储器或者存储器部分中存储对象数据。15.如权利要求1-14中的任意一个所述的方法,进一步包括:在应用虚拟机的终止之前,使得对象存储区中的当前未存储在永久数据存储区中的可迁移对象迁移到永久数据存储区;和在应用虚拟机的终止之后,使得至少已迁移对象的子集从永久数据存储区中检索并存储在应用虚拟机的后续实例的对象存储区中。16.一种电子装置,包括:一个或多个处理器;和存储器,存储要由所述一个或多个处理器执行的一个或多个程序,所述一个或多...

【专利技术属性】
技术研发人员:J布施B奥卡夫卡P邱Y苗
申请(专利权)人:桑迪士克科技有限责任公司
类型:发明
国别省市:美国;US

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

1