减小JAVA虚拟机中由无用单元收集造成的时延的方法技术

技术编号:2848463 阅读:232 留言:0更新日期:2012-04-11 18:40
一种减少JAVA虚拟机(JVM)中由于无用单元收集所造成的时延的方法,其中,不同机器(MC1,MC2,MC3)正在运行连续的应用任务(P1,P2,P3)。由于无用单元收集程序(GC1,GC2,GC3)实例必须运行在每个机器上并且中断运行在该机器上的任务,因此同步其开始以优化对应用响应时延的影响。换句话说,由于应用任务相继运行在不同的机器上,因此通过在所有机器上同时开始其所有实例,即通过同步GC任务实例,无用单元收集程序仅影响一个机器的操作。每个机器可以是多处理器类型的(CPU1,CPU2,CPU3),由此当无用单元收集程序实例在这些处理器之一上运行时,所有处理器的操作都被中断。

【技术实现步骤摘要】

本专利技术涉及一种方法,所述方法用于在JAVA虚拟机环境中在不同机器上运行应用任务,同时在所述机器的每一个上、在预定时期内运行无用单元(garbage)收集程序实例,并且其中,每个所述无用单元收集程序实例都中断(interrupt)运行在同一机器上的任务。
技术介绍
在这种包含用于应用服务器的无用单元收集程序(GC)的JAVA虚拟机(JVM)等中,例如J2EE,应用任务在其响应延时方面受到无用单元收集程序实例的影响。在不同机器上运行应用任务的公知方法包括(consist out of)无用单元收集程序的当前实现。典型地,无用单元收集程序实例在机器内运行,而不知道其它机器上的无用单元收集程序状态。已知方法的问题在于,每当GC实例开始运行时整个机器就被中断。其主要影响是在这样的情况中,即多个机器被编组以具有更好的性能/容量。这种编组可以是群集的(cluster),即所有机器执行相同的应用或服务,或者是级联方式的,即每个机器需要另一机器的结果来开始执行其任务。对于多数应用,总延时需要相对较低。典型地,GC影响是基于每个机器来被考虑的。因此,GC的影响应当是最小的。
技术实现思路
本专利技术的目的是提供一种减少如上述已知类型的JAVA虚拟机中由无用单元收集造成的时延的方法,但是其中,应用可以遭遇/经历的最大可能时延被最小化了。根据本专利技术,由于所述方法包括在所有机器上同时开始所有所述无用单元收集程序实例的步骤这一事实而实现了这个目的。通过在不同机器上以这种方式同步GC任务实例,最大时延被最小化,这在指定限制内带来了尽可能多的服务请求。这个特征显著扩展了可被标注为“运营级(carrier grade)”的产品的范围。在本专利技术的优选特征实施例中,所述应用包括分布在不同机器上的多个连续的任务,其中,在第一机器上完成的第一任务后随有运行在第二机器上的第二任务。在该实施例中,显著增加了本专利技术的优点。实际上,在现有技术中,当机器以级联形式操作时,GC实例可能不幸地运行在正执行应用任务的每个机器上。时延因而被积累从而显著增加了用于完成该应用的延迟。然而通过本专利技术,由于GC实例被同步,因此当一个GC实例运行在例如运行应用任务的那个特定机器上时,没有其它GC实例会干扰该应用的任何其它任务,这是因为任务是以级联形式运行的。于是总时延受一个GC实例的最大影响。本专利技术的另一特征实施例是每个机器都包括多个处理器,并且同一机器的所有处理器的操作同时被运行在所述机器的处理器之一上的所述无用单元收集程序实例中断。在这种JVM运行在多处理器机器上的情况下,通常指派特定机器的一个处理器一次性(in one shot)执行GC任务。这样,它将锁住内存。基本上只要GC任务运行在该处理器上,其它处理器就也推迟它们的操作。由于本专利技术,不仅通过同步GC实例而减小了机器上的时延,而且减小了这些机器中处理器上的时延。本专利技术的另一特征实施例是所述无用单元收集程序实例至少包括中断运行在相同机器上的任务的部分,并且所述方法包括这样的步骤在所有所述机器上同时开始所述无用单元收集程序实例的所有中断部分。在这个优选实施例中,在不同机器和/或处理器上对所述无用单元收集程序的中断部分进行同步,而不是整个GC任务实例。这样,一个机器或机器的一个处理器通过扫描内存来执行无用单元收集程序实例的非中断部分。基本上,在这个子任务期间其它机器或处理器仍可以运行。仅当GC的中断部分运行在机器或处理器上时,其它机器上的所有处理才被停止。结果是应用在较长时期内可用。应当指出,权利要求中使用的术语“包括”不应解释为限于其后列出的装置。因此,“包括装置A和B的设备”这一表述的范围不应限于仅由部件A和B组成的设备。其意味着所述设备关于本专利技术的相关部件仅为A和B。类似地,应当指出,权利要求中也使用的术语“耦合”不应解释为限于仅直接连接。因此,“耦合到设备B的设备A”这一表述的范围不应限于其中设备A的输出直接连接到设备B的输入的设备或系统。其意味着在A的输出和B的输入之间存在路径,该路径可以是包括其它设备或装置的路径。附图说明通过参考以下结合附图的实施例的描述,本专利技术的上述和其它目的及特征将变得显而易见,并且本专利技术本身将得到最好的理解,其中图1说明了运行在如现有技术已知的不同机器上的非同步无用单元收集程序GC实例的最佳情况;图2说明了运行在如现有技术已知的不同机器上的非同步无用单元收集程序GC实例的最差情况;图3说明了根据本专利技术运行在不同机器上的同步GC实例;图4说明了运行在机器的不同处理器上的GC的影响;以及图5说明了当仅GC的一部分中断机器的任务运行时,运行在机器的不同处理器上的GC的影响。具体实施例方式本专利技术涉及JAVA虚拟机(JVM)等,例如J2EE,其中,不同机器正在运行应用任务。该JAVA虚拟机包括用于应用服务器的无用单元收集程序GC,所述GC的实例在预定时期内运行在每个机器上。运行在特定机器上的每个无用单元收集程序实例中断此时运行在相同机器上的任务。结果,应用任务在其响应时延方面受到无用单元收集程序实例的影响。图1和2分别示出了运行在不同机器MC1、MC2、MC3(以细水平线表示)上的应用的最佳和最差情况,其中每个机器可实现任一无用单元收集程序机制。略粗的线(跳经不同机器)表示单个请求或应用的流。虚垂直线表示单个请求/响应应用的请求接收和响应发送。这个应用的总时延是这两条垂直线之间的时间。如图1和2所示,该应用包括分布在不同机器MC1、MC2、MC3上的几个连续任务P1、P2、P3,其中,在第一机器MC1上完成的第一任务P1后随有运行在第二机器MC2上的第二任务P2,第二任务P2后随有运行在第三机器MC3上的第三任务P3。任务P1和任务P2之间的过渡由线T1表示,同时任务P2和P3之间的过渡由线T2表示。由不同的无用单元收集程序GC实例代表的无用单元收集由粗水平线表示。运行在机器MC1上的无用单元收集程序实例被标注为GC1,运行在MC2上的GC实例被标注为GC2,并且运行在MC3上的GC实例被标注为GC3。在图1和2所示的已知方法中,无用单元收集程序实例GC1、GC2和GC3不同步。这意味着在应用期间,GC实例可能开始于任何时刻。应当指出,在实际生活中多个请求或应用是被同时发送的,并且无用单元收集程序实例可被看作是在随机时刻开始的。在较长时期内,一些应用将经历最小的时延,同时另一些应用将经历最大的时延。一方面,且如已提到的,图1说明了非同步无用单元收集程序实例的最佳情况。在这种情况中,在GC和应用任务P1、P2、P3之间没有重叠。换句话说,单个应用/服务请求没有受到任何GC影响。结果,总时延等于P1+T1+P2+T2+P3。其中-T1,T2表示将请求或任务传送到下一服务器或机器所需的传输时间,以及-P1,P2和P3表示分别在机器MC1、机器MC2和机器MC3中进行处理(任务)所用的时间。在这个例子中,总响应在三个机器中被处理之后被产生,每个机器执行特定的任务。另一方面,图2说明了非同步无用单元收集程序实例的最差情况。在这种情况中,每个GC实例运行在机器上时,该机器上也同时运行任务。于是,请求或应用在每个机器中受到GC影响。因此,总时延等于P1+T1+P2+T2+P3+3*Tgc。其中本文档来自技高网...

【技术保护点】
一种方法,所述方法在JAVA虚拟机环境中、在不同机器(MC1,MC2,MC3)上运行应用任务(P1,P2,P3),同时在所述机器的每一个上在预定时期内运行无用单元收集程序(GC1,GC2,GC3)实例,并且其中,每个所述无用单元收集程序实例都中断运行在同一机器上的任务,    其特征在于,所述方法包括在所有机器(MC1,MC2,MC3)上同时开始所有所述无用单元收集程序(GC1,GC2,GC3)实例的步骤。

【技术特征摘要】
EP 2005-4-29 05290960.31.一种方法,所述方法在JAVA虚拟机环境中、在不同机器(MC1,MC2,MC3)上运行应用任务(P1,P2,P3),同时在所述机器的每一个上在预定时期内运行无用单元收集程序(GC1,GC2,GC3)实例,并且其中,每个所述无用单元收集程序实例都中断运行在同一机器上的任务,其特征在于,所述方法包括在所有机器(MC1,MC2,MC3)上同时开始所有所述无用单元收集程序(GC1,GC2,GC3)实例的步骤。2.根据权利要求1的方法,其特征在于,所述应用包括分布在不同机器(MC1,MC2,MC3)上的多个连续任务(P1,P2,P3),其中,在第...

【专利技术属性】
技术研发人员:NAA詹森斯
申请(专利权)人:阿尔卡特公司
类型:发明
国别省市:FR[法国]

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

1