GC之Parallel Scavenge收集器

2019-02-01  本文已影响14人  liuzx32

补充:堆内存是指JVM的内存大小包括堆区和非堆区;
-server 服务器模式运行,-client表示客户端运行模式;
-Xms2G 最小JVM内存2G,是JVM的堆区的大小,不包括PermGen;
-Xmx3G 最大JVM内存3G,是JVM的堆区的大小,不包括PermGen;
-Xmn1G 指定JVM堆区中新生代的初始化大小为1G;

What(是什么)

Parallel Scavenge收集器是Java虚拟机中垃圾收集器的一种。
又称为吞吐量优先收集器,和ParNew收集器类似,是一个新生代收集器。使用复制算法的并行多线程收集器。Parallel Scavenge是Java1.8默认的收集器,特点是并行的多线程回收,以吞吐量优先。

Why(为什么)

1.主要特点

Parallel Scavenge收集器的关注点与其他收集器不同, Parallel Scavenge收集器的目标则是达到一个可控制的吞吐量(Throughput)
(吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间))

2.使用场景

Parallel Scavenge收集器的高吞吐量可以最高效率的利用CPU时间,尽快的完成程序的运算任务等,主要适合在后台运算而不是太多交互的任务(其不适合需要与用户交互的程序,良好的响应速度能提升用户的体验,此种场景CMS效果更好)。

How(怎么做)

1. 重要参数

重要的参数有三个,其中两个参数用于精确控制吞吐量,分别是

2. 自适应调节策略

Parallel Scavenge收集器能够配合自适应调节策略,把内存管理的调优任务交给虚拟机去完成。只需要把基本的内存数据设置好(如-Xmx设置最大堆),然后使用-XX:MaxGCPauseMillis参数(更关注最大停顿时间)或GCTimeRatio参数(更关注吞吐量)给虚拟机设立一个优化目标,那具体细节参数的调节工作就由虚拟机完成了。
自适应调节策略也是Parallel Scavenge收集器与ParNew收集器的一个重要区别。

-XX:-UseParallelGC 和 -XX:+UseParallelOldGC

Parallel New参考

使用方式:-XX:+UseParallelGC强制使用该收集器,打开该收集器后,将使用Parallel Scavenge(年轻代)+Serial Old(老年代)的组合进行GC。

Parallel Old参考:是Parallel Scavenge收集器的老年代版本,用于老年代的垃圾回收,但与Parallel Scavenge不同的是,它使用的是“标记-整理算法”。
适用于注重于吞吐量及CPU资源敏感的场合。

使用方式:-XX:+UseParallelOldGC,打开该收集器后,将使用Parallel Scavenge(年轻代)+Parallel Old(老年代)的组合进行GC。

补充

[GC[PSYoungGen 表示用的是年轻代使用Parallel Scavenge收集器。
[GC[ParNew 表示使用的是年轻代使用ParNew收集器(Parallel New收集器)。
[GC[DefNew 表示用的是年轻代使用Serial收集器(Serial New收集器)。
[GC[PSOldGen 表示用的是老年代使用的Parallel Old收集器。

JVM的GC日志的主要参数包括如下几个:

-XX:+PrintGC 输出GC日志
-XX:+PrintGCDetails 输出GC的详细日志
-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
-XX:+PrintGCApplicationStoppedTime // 输出GC造成应用暂停的时间
-Xloggc:../logs/gc.log 日志文件的输出路径

上一篇 下一篇

猜你喜欢

热点阅读