在混合型系统中进行垃圾回收的缓式标记技术方案

技术编号:2867446 阅读:191 留言:0更新日期:2012-04-11 18:40
本发明专利技术的一个实施例提供了一种在被编译激活框架中以惰性方式键入标记值以便于无用存储单元收集的系统。这个系统以一种混合式环境工作,其同时支持字节代码的解释和被编译本机代码的执行。当接收一个方法调用时,该系统在该执行栈上生成一个用于该方法的激活框架。如果该方法执行于被解释的模式,解释器在执行期间对于每个值在该激活框架中保持一个标记。该标记表示是否该值是一个引用类型或者基本类型。但是,如果该方法执行于被编译模式,该系统在该激活框架中对于每个值分配用于标记的空间,但是在执行期间不填充该标记中。这允许该标记在将来需要时被填充。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】专利技术
技术介绍
领域本专利技术涉及用于计算机系统的编译器。更具体地说,本专利技术涉及一种简化用于编译激活的惰型标记以便于无用存储单元收集的方法和装置。
技术介绍
因特网呈指数的增长部分是由计算机语言的发展、诸如由美国加利福尼亚州Palo Alto的太阳微系统公司开发的JAVATM程序设计语言的发展所推动的。JAVA程序设计语言允许一个应用软件被编译为一个模块,该模块包括不依赖平台的字节代码,其可以通过由很多不同的计算机系统组成的网络被分配。因此任何计算机系统在拥有相应的不依赖平台的虚拟机如java虚拟机的情况下,均能够执行字节代码。通过这种方式,单一一种形式的应用软件即可以容易地被许多不同的计算平台分配和执行。当以不依赖平台的形式接收一个应用软件时,该应用软件可以通过解释器直接得到解释,或者其可以被编译为用于本计算平台的本地体系结构的机器码。执行本机代码通常显著快于解释不依赖平台的字节代码。但是,本机代码所占据的空间远大于相应的字节代码。某些“混合式”计算机系统既支持字节代码的解释,也支持被被编译本机代码的执行。不依赖平台的虚拟机周期性地执行无用存储单元收集操作,以收回预先分配的已不再使用的存储空间。在无用存储单元收集操作期间,必须识别在堆栈上激活框架(activation frame)内的指示字。传统上,这是通过对当前执行的每种方法保持栈地图(stack map),或者通过对于在每个激活框架中的每个值保持一个标记、表示是否该值是一个引用类型或者基本类型来完成的。虽然对于每个值保持标记便于更简单的无用存储单元收集,但对于每个值保持标记所带来的开销会降低执行速度。这可以通过下面的事实解释很多方法从执行到完成并非一定要通过无用存储单元收集操作来查验。因此,对这些方法保持标记所占用的时间基本上是被浪费了。此外,在“混合式”系统中,无用存储单元收集操作典型地利用二种不同类型的激活框架工作,因为用于被编译方法的激活框架通常在结构方面与用于被解释方法的激活框架不同。请注意,一个用于某方法的被解释版本的激活框架典型地大于一个相应的用于该方法的被编译版本的激活框架。这是因为用于被解释版本的激活框架通常包括附加数据,如类型标记,其占据更多的空间。因此,以二种不同类型的激活框架工作使无用存储单元收集操作以及其他借助于激活框架直接处理的操作大幅地复杂化。因此,需要这样一种方法和装置其便于供编译激活用的类型标记,而又没有如上所述的问题。
技术实现思路
本专利技术的一个实施例提供了一种系统,用于在被编译激活框架中以惰性方式标记类型值以便于无用存储单元收集。这种系统以一种混合式环境工作,其既支持字节代码的解释,也支持被编译本机代码的执行。当接收到一个方法的调用时,该系统在执行栈上生成一个用于该方法的激活框架。如果该方法以被解释的模式执行,在执行期间解释器对于每个值在该激活框架中保持一个标记。该标记表示是否该值是一个引用类型或者基本类型。但是,如果该方法以被编译模式执行,则系统在激活框架中对于每个值分配用于标记的空间,然而在执行期间不在该标记中进行填充。这使得该标记可以在将来需要时被填充。在对这个实施例的变化中,在接收到一个方法调用之前,系统将该方法的字节代码编译为本机代码,并在完成该任务时,在该方法的激活框架中采集每个值的类型信息。该系统将此类型信息嵌入到与该方法有关的本机代码中。在对该实施例的进一步变化中,该系统将该类型信息作为位向量嵌入,其中每一位指定是否在该激活框架中的相应值是一个基本类型或者引用类型。在对该实施例的另一种进一步的变化中,该系统在本机代码中的空指令的操作数中嵌入该位向量。在对该实施例的再一种进一步的变化中,该系统在本机代码中调用其他方法或者运行系统的指令之后的位置嵌入该位向量。在对这个实施例的变化中,该系统执行无用存储单元收集操作。在该无用存储单元收集操作期间,系统由本机代码恢复类型信息,并且在该方法的激活框架中的标记中存储该类型信息。在对该实施例的变化中,该系统对于以编译模式执行的方法和以解释模式执行的同样方法生成在结构上相同的激活框架。附图说明图1举例说明一个根据本专利技术实施例的计算装置。图2举例说明一个根据本专利技术实施例的激活框架。图3举例说明一个根据本专利技术实施例的被解释激活框架和被编译激活框架。图4举例说明按照本专利技术的一个实施例由经过编译的代码流恢复标记信息的过程。图5是一个举例说明在根据本专利技术实施例的无用存储单元收集期间恢复标记信息过程的流程图。具体实施例方式下面所提供的说明为的是使所有本领域技术人员均可完成和使用本专利技术,且本说明是以特定应用及其需求的上下文形式提供的。对所公开的实施例的各种各样的修改,对于那些本领域技术人员来说将是容易而明显的,并且无需脱离本专利技术的精神和范围,在此处提出的一般原理即可应用于其他实施例和应用中。因此,本专利技术不应被限制在示出的实施例中,而是应与符合在此处所公开的原理和特点的最宽范围一致。在详细说明中描述的数据结构和代码被典型地存储在计算机可读存储介质上,该计算机可读存储介质可以是存储供计算机系统用的代码和/或数据的任何装置或介质。这包括但不局限于是磁性和光学存储装置,如磁盘驱动器、磁带、CD(光盘)和DVD(数字多用途光碟或者数字视频光碟),以及包含在传输媒介中的计算机指令信号(当该信号被调制时有或者没有载波)。例如,该传输媒介可以包括一个通信网,如因特网。计算装置图1举例说明一个计算装置110,该计算装置根据本专利技术的一个实施例耦合到开发系统106。开发系统106通常可以包括任何类型的计算机系统,包括但不限于是基于微处理器、主计算机、数字信号处理器、便携式计算装置、个人管理器(personal organizer)、设备控制器、或处于一装置内的计算引擎的计算机系统。开发系统106包括开发单元108,其包括用于开发不依赖平台的应用软件的编程工具。这通常包括将来自源代码形式的应用软件以一种不依赖于平台的形式、如JAVA字节代码进行编译。开发系统106经通信链路112耦合到计算装置110。计算装置110可以包括任何类型的计算装置或者系统,包括但不限于主计算机系统、服务器计算机系统、个人计算机系统、工作站、便携式计算机系统、袖珍型计算机系统、个人管理器或者设备控制器。计算装置110还可以包括一个被嵌入在另一装置如传呼机、蜂窝电话、电视接收机、汽车或者用具内的计算装置。通信链路112可以包括任何永久性或者暂时性类型的通信信道,其可用于从开发系统106传送数据到计算装置110。这可以包括(但是不局限于)一个计算机网络,诸如以太网、无线通信链路或者电话线路。计算装置110包括用于存储代码和数据的数据存储器114。计算装置110还包含虚拟机116,用于处理从数据存储器114恢复的不依赖平台的应用。在开发过程期间,在开发单元108内建立一个类别文件(classfile)118。类别文件118包括在计算装置110中执行的不依赖平台的应用软件的成分。例如,类别文件118可以包括与一个面向对象的类相关的方法和字段。值得注意的是,这些方法是使用不依赖平台的字节代码119指定的。接下来,类别文件118被从开发单元108经由通信链路112传送到计算装置110内的数据存储器114。这使虚拟机116可以执行一种利本文档来自技高网
...

【技术保护点】
一种用于在被编译激活框架中键入标记值以便于无用存储单元收集的方法,其中该方法工作于一种混合模式系统中,该混合模式系统既支持字节代码的解释,又支持被编译本机代码的执行,该方法包括:接收一个方法的调用;在执行栈上生成一个用于该方 法的激活框架;解释字节代码方法;其中如果该方法以被解释模式被执行,该解释包括在执行期间,在该激活框架中对于每个值保留一个标记,其中一给定的标记表示是否一给定值为引用类型或者基本类型;和其中如果该方法以被编译模式被执行 ,生成该激活框架包括在该激活框架中对于每个值分配用于标记的空间,其中一给定的标记表示是否一给定值为引用类型或者基本类型,借此,在该激活框架中将类型信息存储进该标记的操作被推迟,直到发生一个后续的无用存储单元收集操作为止。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:K伦德L巴克
申请(专利权)人:太阳微系统公司
类型:发明
国别省市:US[美国]

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

1