负载均衡方法及装置制造方法

文档序号:6525667阅读:104来源:国知局
负载均衡方法及装置制造方法
【专利摘要】本发明实施例提供一种负载均衡方法及装置,应用于包括至少两个节点的多处理器系统,其中,所述方法包括:第一垃圾回收线程对第一节点中的第二垃圾回收线程的任务队列进行判断,第一垃圾回收线程为任务队列为空的垃圾回收线程,第一节点为第一垃圾回收线程所属的节点,第二回收线程为与第一垃圾线程同属于同一个节点中的不同CPU核处理的垃圾回收线程;在第一垃圾回收线程确定第二垃圾回收线程的任务队列为非空任务队列时,从第二垃圾回收线程的任务队列中截取对象并加入到第一垃圾回收线程的任务队列。本发明实施例提供的负载均衡方法及装置,提高了负载均衡的伸缩性,提高了NUMA架构中垃圾回收的性能。
【专利说明】负载均衡方法及装置
【技术领域】
[0001]本发明实施例涉及计算技术,尤其涉及一种负载均衡方法及装置。
【背景技术】
[0002]非一致性内存访问(Non-UniformMemory Access Architecture,简称NUMA)是一种多处理器(CPU)互联架构技术。在NUMA架构中,每个节点的CPU核既可以访问所在节点的物理内存(本地内存),也可以访问其它节点的物理内存(远程内存)。
[0003]在应用程序执行过程中,如果应用线程无法在Java堆中继续分配新对象,Java虚拟机就会触发垃圾回收线程回收不再使用的内存,以便后续内存分配能够顺利进行。并行垃圾回收是指多个垃圾回收线程并行协同完成垃圾回收工作。在并行垃圾回收过程中,各个垃圾回收线程的回收压力会出现不均衡的情况,因此,在并行垃圾回收过程中,Java虚拟机需要处理垃圾回收线程负载均衡的问题。在传统的基于任务队列的并行垃圾回收的负载均衡技术中=Java虚拟机在垃圾回收初始阶段,将根引用平均分配给各个垃圾回收线程;在垃圾回收进行阶段,当某个垃圾回收线程的任务队列为空时,该垃圾回收线程将随机查找其他垃圾回收线程的任务队列,如果该任务队列不为空,则将该任务队列的尾部对象加入该垃圾回收线程的任务队列,继续进行垃圾回收工作。
[0004]然而,在NUMA架构中,传统的并行垃圾回收的负载均衡技术会导致大量的远程访问,使得垃圾回收性能降低。

【发明内容】

[0005]本发明实施例提供一种负载均衡方法及装置,以解决传统负载均衡技术在NUMA架构中垃圾回收的大量远程访问导致垃圾回收性能降低的问题,提高NUMA架构中垃圾回收的性能。
[0006]第一方面,本发明实施例提供一种负载均衡方法,应用于包括至少两个节点的多处理器系统,其中,所述方法包括:
[0007]第一垃圾回收线程对第一节点中的第二垃圾回收线程的任务队列进行判断,所述第一垃圾回收线程为任务队列为空的垃圾回收线程,所述第一节点为所述第一垃圾回收线程所属的节点,所述第二垃圾回收线程为与所述第一垃圾回收线程同属于同一个节点中的不同CPU核处理的垃圾回收线程;
[0008]在所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为非空任务队列时,从所述第二垃圾回收线程的任务队列中截取对象并加入到所述第一垃圾回收线程的任务队列。
[0009]根据第一方面,在第一方面的第一种可能的实现方式中,还包括:
[0010]在所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为空时,对第二节点中的第三垃圾回收线程进行判断,所述第二节点为所述至少两个节点中除所述第一节点以外的其他节点;[0011]在所述第一垃圾回收线程确定所述第三垃圾回收线程的任务队列为非空任务队列时,从所述第三垃圾回收线程的任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列。
[0012]根据第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述从所述第二垃圾回收线程的任务队列中截取对象,包括:截取所述第二垃圾回收线程的任务队列中的尾部对象;
[0013]所述从所述其他节点中的第三垃圾回收线程的任务队列中截取对象,包括:截取所述第三垃圾回收线程的任务队列中的尾部对象。
[0014]根据第一方面、第一方面的第一种至第二种可能的实现方式的任意一种,在第一方面的第三种可能的实现方式中,还包括:
[0015]所述第一垃圾回收线程获取所述多处理器系统的虚拟机分配的位于所述第一节点内的根引用对象;
[0016]所述第一垃圾回收线程将所述虚拟机分配的位于所述第一节点内的根引用对象加入所述第一垃圾回收线程的任务队列。
[0017]第二方面,本发明实施例提供一种负载均衡装置,应用于包括至少两个节点的多处理器系统,其中,所述负载均衡装置包括:
[0018]第一确定模块,用于对第一节点中的第二垃圾回收线程的任务队列进行判断;
[0019]第一获取模块,用于在所述第一确定模块确定所述第二垃圾回收线程的任务队列为非空任务队列时,从所述第二垃圾回收线程的任务队列中截取对象并加入到第一垃圾回收线程的任务队列;所述第一垃圾回收线程为任务队列为空的垃圾回收线程,所述第一节点为所述第一垃圾回收线程所属的节点,所述第二垃圾回收线程为与所述第一垃圾回收线程同属于同一个节点中的不同CPU核处理的垃圾回收线程。
[0020]根据第二方面,在第二方面的第一种可能的实现方式中,还包括:
[0021]第二确定模块,用于在所述第一确定模块确定所述第二垃圾回收线程的任务队列为空时,对第二节点中的第三垃圾回收线程进行判断,所述第二节点为所述至少两个节点中除所述第一节点以外的其他节点;
[0022]第二获取模块,用于在所述第二确定模块确定所述第三垃圾回收线程的任务队列为非空任务队列时,从所述第三垃圾回收线程的任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列。
[0023]根据第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第一获取模块具体用于:截取所述第二垃圾回收线程的任务队列中的尾部对象并加入到所述第一垃圾回收线程的任务队列;
[0024]所述第二获取模块具体用于:截取所述第三垃圾回收线程的任务队列中的尾部对象并加入到所述第一垃圾回收线程的任务队列。
[0025]根据第二方面、第二方面的第一种至第二种可能的实现方式的任意一种,在第二方面的第三种可能的实现方式中,还包括:第三获取模块,用于获取所述多处理器系统的虚拟机分配的位于所述第一节点内的根引用对象;将所述虚拟机分配的位于所述第一节点内的根引用对象加入所述第一垃圾回收线程的任务队列。
[0026]本发明实施例提供的负载均衡方法及装置,通过在垃圾回收过程中优先在本地节点进行负载均衡,即,空闲的垃圾回收线程优先从本地节点内的其他垃圾回收线程的非空任务队列中截取对象,避免了传统技术在NUMA架构中随机截取对象导致的大量远程访问,使得负载均衡对垃圾回收性能的提升幅度不再受到CPU核数增加的限制,因而,提高了负载均衡的伸缩性,提高了 NUMA架构中垃圾回收的性能。
【专利附图】

【附图说明】
[0027]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0028]图1为本发明实施例提供的负载均衡方法的流程图;
[0029]图2为本发明实施例提供的负载均衡装置的结构示意图;
[0030]图3为本发明实施例提供的负载均衡装置的另一结构示意图;
[0031]图4为本发明实施例提供的负载均衡装置的又一结构示意图。
【具体实施方式】
[0032]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0033]图1为本发明实施例提供的负载均衡方法的流程图。本发明实施例提供的负载均衡方法,应用于包括至少两个节点的多处理器系统,如图1所示,所述方法包括:
[0034]101、第一垃圾回收线程对第一节点中的第二垃圾回收线程的任务队列进行判断,所述第一垃圾回收线程为任务队列为空的垃圾回收线程,所述第一节点为所述第一垃圾回收线程所属的节点,所述第二回收线程为与所述第一垃圾线程同属于同一个节点中的不同CPU核处理的垃圾回收线程。
[0035]102、在所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为非空任务队列时,从所述第二垃圾回收线程的任务队列中截取对象并加入到所述第一垃圾回收线程的任务队列。
[0036]具体地,本发明实施例提供的负载均衡方法可以应用于NUMA架构的多处理器系统。所述多处理器系统包括至少两个节点,所述至少两个节点包括:第一节点和第二节点,所述第一垃圾回收线程和所述第二垃圾回收线程属于所述第一节点中的不同CPU核处理的垃圾回收线程;所述第一节点为所述第一垃圾回收线程的本地节点。每个节点包括内存空间(本地内存)和至少一个CPU核,每个CPU核设置一个垃圾回收线程,每个垃圾回收线程都分别维护一个任务队列,任务队列中的元素由对象组成。本发明实施例提供的负载均衡方法的执行主体可以为第一垃圾回收线程。在应用程序执行过程中,当应用线程无法在Java堆中继续分配新对象时,Java虚拟机就会触发垃圾回收,回收不再使用的内存,以供后续内存分配。在垃圾回收进行阶段,第一垃圾回收线程判断所述第一垃圾回收线程的任务队列是否为空:若确定所述第一垃圾回收线程的任务队列为空(也即所述第一垃圾回收线程处于空闲状态),则第一垃圾回收线程对第一节点中的第二垃圾回收线程的任务队列进行判断;在所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为非空任务队列时,从所述第二垃圾回收线程的任务队列中截取对象并加入到所述第一垃圾回收线程的任务队列。
[0037]在传统的并行垃圾回收的负载均衡技术,当本地节点中的某个垃圾回收线程(例如线程1)判断其任务队列为空时,线程1随机查找其他垃圾回收线程的任务队列,并从查找到的垃圾回收线程的任务队列中截取对象,然而,在NUMA结构的多处理器系统中,当所述查找到的垃圾回收线程属于其他节点时,线程1为了完成从所述查找到的垃圾回收线程的任务队列中截取对象并加入到的线程1的任务队列的操作,需要执行大量的远程访问,造成垃圾回收时间增大,垃圾回收性能降低。同时,CPU核数的增加也会带来更多的远程访问,导致垃圾回收的性能随着垃圾回收线程的增加不升反降,即负载均衡对垃圾回收性能的提升幅度受到CPU核数增加的限制,负载均衡的伸缩性差。
[0038]相比于传统技术,本发明实施例提供的负载均衡方法通过在垃圾回收过程中优先在本地节点进行负载均衡,即,空闲的垃圾回收线程优先从本地节点内的其他垃圾回收线程的非空任务队列中截取对象,避免了传统技术在NUMA架构中随机截取对象导致的大量远程访问,使得负载均衡对垃圾回收性能的提升幅度不再受到CPU核数增加的限制,因而,提高了负载均衡的伸缩性,提高了 NUMA架构中垃圾回收的性能。
[0039]在上述实施例的基础上,可选的,在所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为空时,对第二节点中的第三垃圾回收线程进行判断,所述第二节点为所述至少两个节点中除所述第一节点以外的其他节点;在所述第一垃圾回收线程确定所述第三垃圾回收线程的任务队列为非空任务队列时,从所述第三垃圾回收线程的任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列。
[0040]具体地,若所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为空,则查找所述第二节点中的垃圾回收线程的任务队列;在确定所述第二节点中的第三垃圾回收线程的任务队列为非空任务队列时,从所述第三垃圾回收线程的任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列。
[0041]在上述实施例的基础上,所述第一垃圾回收线程从所述第二垃圾回收线程的任务队列中截取对象的一种可行的实现方式是:所述第一垃圾回收线程截取所述第二垃圾回收线程的任务队列中的尾部对象。
[0042]所述第一垃圾回收线程从所述其他节点中的第三垃圾回收线程的任务队列中截取对象的一种可行的实现方式是:所述第一垃圾回收线程截取所述第三垃圾回收线程的任务队列中的尾部对象。
[0043]在上述实施例的基础上,在垃圾回收初始阶段,虚拟机枚举所有根引用对象,构造根引用对象集合;虚拟机将所述根引用对象集合中的根引用对象分配给所述NUMA架构的多处理器系统的各个垃圾回收线程,一种可行的实现方式是:虚拟机将所述根引用对象集合中的同一节点内的根引用对象分配给所述同一节点内的垃圾回收线程;所述第一垃圾回收线程获取所述虚拟机分配给所述第一垃圾回收线程的、位于所述第一节点内的根引用对象,并加入所述第一垃圾回收线程的任务队列。实际中,所述虚拟机可以将所述根引用对象集合中的同一节点内的根引用对象平均分配给所述同一节点的垃圾回收线程。[0044]本发明实施例提供的负载均衡方法,通过在垃圾回收初始阶段,根引用对象被分配给与该根引用对象在同一节点的垃圾回收线程,从而,在垃圾回收线程遍历的初始阶段,所有的对象访问都是本地内存访问,避免了传统技术在NUMA架构中随机分配根引用对象导致的大量远程访问,使得负载均衡对垃圾回收性能的提升幅度不再受到CPU核数增加的限制,因而,提高了负载均衡的伸缩性,提高了 NUMA架构中垃圾回收的性能。
[0045]在上述实施例的基础上,下面结合一个具体的实施例对本发明实施例提供的在NUMA架构的多处理器系统中实现并行垃圾回收的负载均衡方法的实现过程进行详细说明:
[0046]在垃圾回收起始阶段:
[0047]I)当应用线程无法在Java堆中继续分配新对象时,Java虚拟机触发垃圾回收。
[0048]2)当所有应用线程全部暂停时,垃圾回收开始。
[0049]3 ) Java虚拟机枚举所有根引用对象,构造根引用对象集合。
[0050]4) Java虚拟机将所述根引用对象集合中的同一节点内的根引用对象平均分配给所述同一节点的垃圾回收线程。各垃圾回收线程分别将Java虚拟机为各自分配的根引用对象加入各自的任务队列。
[0051]在垃圾回收进行阶段:
[0052]5)各所述垃圾回收线程从各自的根引用对象开始遍历对象引用关系图,查找并标记活对象,并将标记的活对象加入各自的任务队列。如果某个对象在对象引用关系图中的所有子对象都被遍历过,则将该对象从任务队列中出队。
[0053]6)各所述垃圾回收线程检测各自的任务队列是否为空;若各所述垃圾回收线程中的某个垃圾回收线程确定其自身的任务队列为空时,该垃圾回收线程优先从本地节点内的其他垃圾回收线程的非空任务队列中截取对象并加入自身垃圾任务队列,之后继续进行垃圾回收工作;以第一垃圾回收线程为例:
[0054]第一垃圾回收线程判断所述第一垃圾回收线程的任务队列(第一任务队列)是否为空;
[0055]若所述第一垃圾回收线程确定所述第一任务队列为空,则判断所述第一垃圾回收线程所在的第一节点(即,本地节点)中的其他垃圾回收线程(此例中为第二垃圾回收线程)的任务队列是否为空;
[0056]若所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为非空任务队列,则从所述第二垃圾回收线程的非空任务队列中截取对象并加入到所述第一垃圾回收线程的任务队列;
[0057]所述第一垃圾回收线程,继续进行垃圾回收工作。
[0058]7)若所述第一垃圾回收线程确定所述本地节点中的所有垃圾回收线程(所述第一垃圾回收线程和所述第二垃圾回收线程)的任务队列都为空,则从所述第二节点(即其他节点)中的第三垃圾回收线程的非空任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列;
[0059]所述第一垃圾回收线程,继续进行垃圾回收工作。
[0060]8)若所述第一垃圾回收线程确定NUMA架构的多处理器系统中的所有垃圾回收线程的任务队列都为空时,对象标记工作完成。[0061]9) Java虚拟机进行Java堆的回收工作。
[0062]10)垃圾回收工作完成。
[0063]本发明实施例提供的负载均衡方法,解决了传统技术在NUMA架构中垃圾回收阶段的大量远程访问导致垃圾回收性能降低的问题,减短了 NUMA架构中并行垃圾回收时间,提高了负载均衡的伸缩性,提高了并行垃圾回收性能,并且减少了内存访问开销,减短了虚拟机总的运行时间,提升了虚拟机的性能。
[0064]图2为本发明实施例提供的负载均衡装置的结构示意图。本发明实施例提供的负载均衡装置200应用于包括至少两个节点的多处理器系统,如图2所示,负载均衡装置200包括:
[0065]第一确定模块201,用于对第一节点中的第二垃圾回收线程的任务队列进行判断;
[0066]第一获取模块202,用于在所述第一确定模块201确定所述第二垃圾回收线程的任务队列为非空任务队列时,从所述第二垃圾回收线程的任务队列中截取对象并加入到第一垃圾回收线程的任务队列;所述第一垃圾回收线程为任务队列为空的垃圾回收线程,所述第一节点为所述第一垃圾回收线程所属的节点,所述第二垃圾回收线程为与所述第一垃圾回收线程同属于同一个节点中的不同CPU核处理的垃圾回收线程。
[0067]本发明实施例提供的负载均衡装置200可以是第一垃圾回收线程,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,在此不再赘述。
[0068]图3为本发明实施例提供的负载均衡装置的另一结构示意图。本发明实施例基于图2所示装置实施例来实现,本发明实施例提供的负载均衡装置300也包括第一确定模块201和第一获取模块202,并且各模块也分别具有图2所示装置实施例中的相应功能;进一步地,如图3所示,本发明实施例提供的负载均衡装置300,还可以包括:
[0069]第二确定模块301,用于在所述第一确定模块201确定所述第二垃圾回收线程的任务队列为空时,对第二节点中的第三垃圾回收线程进行判断,所述第二节点为所述至少两个节点中除所述第一节点以外的其他节点;
[0070]第二获取模块302,用于在所述第二确定模块301确定所述第三垃圾回收线程的任务队列为非空任务队列时,从所述第三垃圾回收线程的任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列。
[0071]可选的,所述第一获取模块202具体用于截取所述第二垃圾回收线程的任务队列中的尾部对象并加入到所述第一垃圾回收线程的任务队列;所述第二获取模块302具体用于截取所述第三垃圾回收线程的任务队列中的尾部对象并加入到所述第一垃圾回收线程的任务队列。
[0072]图4为本发明实施例提供的负载均衡装置的又一结构示意图。本发明实施例提供的负载均衡装置400可以包括图2所示装置实施例中的第一确定模块201和第一获取模块202,以及图3所示装置实施例中的第二确定模块301和第二获取模块302 ;进一步地,如图4所示,本发明实施例提供的负载均衡装置400,还可以包括:
[0073]第三获取模块401,用于获取所述多处理器系统的虚拟机分配的位于所述第一节点内的根引用对象;将所述虚拟机分配的位于所述第一节点内的根引用对象加入所述第一垃圾回收线程的任务队列。[0074]在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0075]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0076]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0077]上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(Random Access Memory, RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0078]本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0079]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种负载均衡方法,应用于包括至少两个节点的多处理器系统,其特征在于,包括:第一垃圾回收线程对第一节点中的第二垃圾回收线程的任务队列进行判断,所述第一垃圾回收线程为任务队列为空的垃圾回收线程,所述第一节点为所述第一垃圾回收线程所属的节点,所述第二垃圾回收线程为与所述第一垃圾回收线程同属于同一个节点中的不同CPU核处理的垃圾回收线程;在所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为非空任务队列时,从所述第二垃圾回收线程的任务队列中截取对象并加入到所述第一垃圾回收线程的任务队列。
2.根据权利要求1所述的方法,其特征在于,还包括:在所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为空时,对第二节点中的第三垃圾回收线程进行判断,所述第二节点为所述至少两个节点中除所述第一节点以外的其他节点;在所述第一垃圾回收线程确定所述第三垃圾回收线程的任务队列为非空任务队列时,从所述第三垃圾回收线程的任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列。
3.根据权利要求2所述的方法,其特征在于,所述从所述第二垃圾回收线程的任务队列中截取对象,包括:截取所述第二垃圾回收线程的任务队列中的尾部对象;所述从所述其他节点中的第三垃圾回收线程的任务队列中截取对象,包括:截取所述第三垃圾回收线程的任务队列中的尾部对象。`
4.根据权利要求1-3任一项所述的方法,其特征在于,还包括:所述第一垃圾回收线程获取所述多处理器系统的虚拟机分配的位于所述第一节点内的根引用对象;所述第一垃圾回收线程将所述虚拟机分配的位于所述第一节点内的根引用对象加入所述第一垃圾回收线程的任务队列。
5.一种负载均衡装置,应用于包括至少两个节点的多处理器系统,其特征在于,包括:第一确定模块,用于对第一节点中的第二垃圾回收线程的任务队列进行判断;第一获取模块,用于在所述第一确定模块确定所述第二垃圾回收线程的任务队列为非空任务队列时,从所述第二垃圾回收线程的任务队列中截取对象并加入到第一垃圾回收线程的任务队列;所述第一垃圾回收线程为任务队列为空的垃圾回收线程,所述第一节点为所述第一垃圾回收线程所属的节点,所述第二垃圾回收线程为与所述第一垃圾回收线程同属于同一个节点中的不同CPU核处理的垃圾回收线程。
6.根据权利要求5所述的负载均衡装置,其特征在于,还包括:第二确定模块,用于在所述第一确定模块确定所述第二垃圾回收线程的任务队列为空时,对第二节点中的第三垃圾回收线程进行判断,所述第二节点为所述至少两个节点中除所述第一节点以外的其他节点;第二获取模块,用于在所述第二确定模块确定所述第三垃圾回收线程的任务队列为非空任务队列时,从所述第三垃圾回收线程的任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列。
7.根据权利要求6所述的负载均衡装置,其特征在于, 所述第一获取模块具体用于:截取所述第二垃圾回收线程的任务队列中的尾部对象并加入到所述第一垃圾回收线程的任务队列; 所述第二获取模块具体用于:截取所述第三垃圾回收线程的任务队列中的尾部对象并加入到所述第一垃圾回收线程的任务队列。
8.根据权利要求5-7任一项所述的负载均衡装置,其特征在于,还包括: 第三获取模块,用于获取所述多处理器系统的虚拟机分配的位于所述第一节点内的根引用对象;将所述虚拟机分配的位于所述第一节点内的根引用对象加入所述第一垃圾回收线程的任务 队列。
【文档编号】G06F9/50GK103699435SQ201310728268
【公开日】2014年4月2日 申请日期:2013年12月25日 优先权日:2013年12月25日
【发明者】廖彬, 靳国杰, 高翔 申请人:龙芯中科技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1