JAVA各垃圾收集器

1、Serial 单线程收集器   

      启用命令   java -XX:+UseSerialGC

      使用该收集器,会导致系统暂停,但是该收集器占用内存空间比较小,是JAVA开发嵌入式程序时首选的收集器

2、Parallel 多线程收集器

      收集老年代垃圾   java -XX:+UseParallelGC

      收集新生代垃圾   java -XX:+UseParallelGC

      该收集器是JVM默认收集器,使用时也会造成应用程序暂停,但是该收集器和Serial的区别是,该收集器会启用多线程执行收集,同时支持各种JVM命令进行配置,配置命令如下:     

-XX:ParallelGCThreads=<N>  ---配置吞吐量
-XX:MaxGCPauseMillis=<N>   ---程序总暂停时间
-XX:GCTimeRatio=<N>        ---GC占用时间比例
-Xmx<N>                    ---内存占用

3、CMS 多线程收集器(JK8后已废除,不需要熟悉)

     CMS垃圾收集器与应用程序并行运行。对于新生代和老年代都使用了多线程

4、G1 收集器(JK8后代替CMS收集器)

      启用命令    java -XX:+UseG1GC

     面试最爱问,G1通过多线程标志多个大小相同的内存区域,标志完成后,G1收集器知道哪一些区域里大部分为空闲,即进行清空/删除,在 G1 收集器中,一个对象如果大小超过半个区域容量会被认为是一个“大对象” 。这些对象被放置在老年代中   

由于现在大部分企业使用JK8进行面试,以下收集器了解即可

5、Epsilon 收集器(JDK11后引入,了解即可)

     启用命令   java -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC

    它不做任何实际的内存回收,只负责管理内存分配。Epsilon 只在当你知道应用程序的确切内存占用情况并且不需要垃圾回收时使用。启用命令如下:

6、Shenandoah 收集器(JDK12后引入)

     启用命令:java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC
     它会进行内存压缩,立即删除无用对象并释放操作系统的空间。所有的这一切与应用程序线程并行发生。

7、ZGC 收集器

启用 ZGC :java -XX:+UnlockExperimentalVMOptions -XX:+UseZGC

ZGC 为低延迟需要和大量堆空间使用而设计,允许当垃圾回收器运行时 Java 应用程序继续运行。ZGC 收集器在 JDK11 引入,在 JDK12 改进。在 JDK15后,正式脱离测试阶段投入使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值