2. 垃圾回收器有哪些?G1有什么特点

垃圾回收器有哪些?G1有什么特点

常用垃圾收集器:

新生代(新生代都是复制算法):

  1. Serial
  2. ParNew
  3. Prallel Scavenge

老年代:

  1. Serial Old(整理算法)
  2. CMS(清除算法)
  3. Prallel Old(整理算法)

兼顾新生代和老年代:

  1. G1
  2. Epsilon GC
  3. ZGC

先说说的Serial

Serial(Serial Old)是古老的单线程GC,会进入Stop-The-World状态,当然因为精简的GC实现,无需维护复杂的数据结构;开启方法:

-XX:+UseSerialGC

ParNew GC

其是Serial的多线程版本,常见的场合是配合CMS GC工作,开启方法:

-XX:+UseConcMarkSweepGC -XX:UseParNewGC

CMS

设计目标是尽量减少停顿,这对web等反应时间敏感的应用很重要;但因为其采用的是清除算法,存在内存碎片化问题,难以避免长期运行后full gc导致的恶劣停顿;另外,并发会和用户线程争抢cpu资源;

Parallel GC

吞吐量优先的并行GC实现,在服务器环境中更加高效;

-XX:+UseParallelGC

其引入了开发者友好的配置项,可以直接设置暂停时间或吞吐量目标,jvm会自动进行适应性调整:

-XX:MaxGCPauseMillis=value
-XX:GCTimeRatio=N

G1 兼顾吞吐量和停顿时间的GC实现,表现都不错;值得深入掌握的GC

G1存在年代的概念,但内存结构不再是简单的条带式划分,而且类似棋盘的一个个region,region之间是复制算法,但整体上可以看作是整理算法,可以避免内存碎片化;

其GC方式也发生了变化,其内部维护了一个优先队列,在mixd GC(即新生代GC时候捎带进行老年代GC)时,根据可停顿的时间选择回收收益最大的老年代region进行回收;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。