如何确认自己的JDK使用的哪个垃圾收集器?
- 在可以用jvm参数,打印自己的jdk版本和收集器信息
-XX:+PrintCommandLineFlags -version
/**
* @author yangyuanliang
* @version 1.9
* @date 2022/4/25 20:34
*/
public class JvmGC {
public static void main(String[] args) {
System.out.println("test");
}
}
-XX:InitialHeapSize=134217728 -XX:MaxHeapSize=2147483648 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops
-XX:+UseParallelGC 我的是java8版本,该参数代表使用的Paralle垃圾收集器
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
Paralle垃圾收集器介绍
- 新生代使用 Parallel Scavenge收集器
使用的算法是基于标记-复制算法实现。收集器的目标是达到一个可控制的吞吐量,如何计算:吞吐量=用户代码运行时间/(代码运行时间+垃圾收集时间),重点关注一个参数吧 -XX:UserAdaptiveSizePolicy 这个参数激活后,不需要人工的指定新生代大小(-Xmn)、Eden与Surivivor区的比例,晋升老年代对象大小等参数了,虚拟机会根据当前系统运行情况收集性能监控信息动态调整这些参数以提供最合适的停顿时间合或最大的吞吐量。 - 老年带使用的是Parallel Old收集器
是Parallel Scavenge的老年代版本,基于标记-整理算法实现,支持多线程并行收集。他的出现缓解了Parallel Scavenge的尴尬处境,因为Parallel Scavenge和别的优秀的老年代收集器不搭。出现后他俩搭配,才让吞吐量优先的收集器名副其实。
|