Parallel Collector

Parallel Collector

  • A、ParNewGC(新生代),-XX:+UseParNewGC,是Serial的多线程版,

  • B、ParallelGC(新生代),-XX:+UseParallelGC,多线程版,但是吞吐量优先

  • C、ParallelOldGC(年老代),-XX:+UseParallelOldGC,ParallelOldGC的FullGC的动作为清空整个heap堆中的垃圾对象,清除Perm区中已经被卸载的类信息,并进行压缩。而ParallelGC的FullGC,是清除heap中的部分垃圾对象,并进行部分的空间压缩。

-XX:ParallecGCThreads

如果CPU core<=8,则为CPU的核数,否则3+(cpu core * 5)/8

悲观策略

在向Eden区申请空间时,如果Eden区不够,那么看当前申请空间是否大于Eden区的一半,如果大于则直接在old区分配,否则触发MinorGC,执行以下判断:

采用Parallel GC的情况下,当YGC触发时,会有两个检查:

  • 1、在YGC执行前,min(目前新生代已使用的大小,之前平均晋升到old的大小) > 旧生代剩余空间大小 ?

  • 不执行YGC,直接执行Full GC : 执行YGC;

  • 2、在YGC执行后,平均晋升到old的大小 > 旧生代剩余空间大小 ? 触发Full GC : 什么都不做。

当old区或者perm区不足时会触发FullGC,如果配置了参数ScavengeBeforeFullGC,则在FullGC之前会先触发MinorGC。

### 回答1: JVM是Java Virtual Machine(Java虚拟机)的简称,是一种能够在不同平台上运行Java程序的软件。在JVM中,有两种垃圾回收器(Garbage Collector)分别为Parallel Scavenge和Parallel Old。 Parallel Scavenge是一种新生代(Young Generation)垃圾回收器,采用复制算法(Copying Algorithm)实现。它的设计目标是尽可能地减少垃圾回收的停顿时间,以提高吞吐量(Throughput)。Parallel Scavenge在垃圾回收时,会将新生代分成多个大小相等的区域(Region),每个区域都是一个独立的Eden、Survivor或者Tenured区域。在垃圾回收时,所有的Eden区域和Survivor区域中存活的对象都会被复制到一个新的Survivor区域中,而所有的Tenured区域中存活的对象则会被移动到老年代(Old Generation)。这个过程中,每个区域都是独立进行的,不需要进行任何协调,因此可以充分利用多核CPU的并行能力。 Parallel Old是一种老年代(Old Generation)垃圾回收器,同样采用复制算法实现。它的设计目标是尽可能地减少垃圾回收的总时间,以提高吞吐量。Parallel Old在垃圾回收时,会将老年代分成多个大小相等的区域,每个区域都是一个独立的Tenured区域。在垃圾回收时,所有的Tenured区域中存活的对象都会被复制到一个新的区域中,而被回收的区域则会被释放。与Parallel Scavenge类似,Parallel Old也可以充分利用多核CPU的并行能力。 总之,Parallel Scavenge和Parallel Old都是采用复制算法实现的垃圾回收器,它们的设计目标都是提高吞吐量。Parallel Scavenge主要用于新生代的垃圾回收,而Parallel Old则主要用于老年代的垃圾回收。两者都可以充分利用多核CPU的并行能力,从而提高垃圾回收的效率。 ### 回答2: JVM(Java虚拟机)是Java编程语言的运行时环境,它可以执行Java字节码并管理内存,其中包括垃圾回收器。 在JVM中,Parallel Scavenge和Parallel Old是两种垃圾回收器。Parallel Scavenge和Parallel Old都属于并行垃圾回收器,它们之间存在一定的区别和用途。 Parallel Scavenge(并行Scavenge)是JVM中的年轻代垃圾回收器,主要用于新生代的垃圾回收。它的特点是通过多个线程并行地进行垃圾回收,以提高垃圾回收的效率。Parallel Scavenge使用复制算法来回收内存,即将存活的对象复制到一个新的空间中,然后将整个空间清空,从而达到垃圾回收的目的。由于它的并行性较高,适用于拥有大量处理器和较高吞吐量的应用程序。 Parallel Old(并行Old)是JVM中的老年代垃圾回收器,主要用于老年代的垃圾回收。它的特点是同样采用多线程并行地进行垃圾回收,但采用标记-压缩算法。在标记阶段,Parallel Old会标记所有的存活对象;在压缩阶段,它会将所有存活对象移动到内存空间的一端,并清理未使用的内存,从而释放出内存空间。Parallel Old适用于长时间存在的大对象,在标记和压缩阶段会产生较长的停顿时间,因此对于延迟要求较高的应用程序可能不太合适。 综上所述,Parallel Scavenge和Parallel Old是JVM中的两种并行垃圾回收器,分别用于年轻代和老年代的垃圾回收。Parallel Scavenge适用于拥有大量处理器和高吞吐量的应用程序,而Parallel Old适用于长时间存在的大对象。选择适合的垃圾回收器可以提高应用程序的性能和响应速度。 ### 回答3: JVM是Java虚拟机的简称,在Java程序的运行过程中起着重要的作用。其中,Parallel Scavenge(并行新生代)和Parallel Old(并行老年代)是JVM中两种不同的垃圾回收器。 Parallel Scavenge是一种并行垃圾回收器,主要用于新生代的垃圾回收。它的特点是使用多个线程并行地回收垃圾,以达到提高垃圾回收效率的目的。并行回收可以更快地处理大量的垃圾对象,同时尽量减少应用程序的停顿时间。Parallel Scavenge使用复制算法进行垃圾回收,将新生代分为Eden区和两个Survivor区,通过不断地将存活的对象复制到另一个存活区来进行垃圾回收。 Parallel Old则是一种并行垃圾回收器,主要用于老年代的垃圾回收。老年代中的对象存活周期较长,因此垃圾回收需要更加高效。Parallel Old同样使用复制算法进行垃圾回收,但与Parallel Scavenge不同的是,Parallel Old使用的是标记-整理算法,它会先标记所有存活的对象,然后将这些对象整理到内存的一端,再进行垃圾回收。 总的来说,Parallel Scavenge和Parallel Old都是JVM中的垃圾回收器,它们都利用多线程的方式进行并行垃圾回收,提高了垃圾回收的效率。Parallel Scavenge主要用于新生代的垃圾回收,而Parallel Old主要用于老年代的垃圾回收。两者使用的算法有些不同,但都可以通过并行回收来减少应用程序的停顿时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值