垃圾回收算法(4种)垃圾回收的方式有哪些

垃圾回收算法(4种)

GC算法是内存回收的方法论,垃圾收集器就是算法落地实现。

  • 引用计数
  • 复制算法
  • 标记-清除
  • 标记-整理

对垃圾回收期的理解:

目前为止没有完美的收集器出现,更没有万能的收集器,只有针对具体应用最合适的收集器,进行分代收集。

垃圾回收的方式有哪些?

黄色的线表示GC线程。

在这里插入图片描述

1.Serial(串行垃圾回收器)

它为单线程环境设计且只使用一个线程进行垃圾回收,会暂停所有的用户线程,所以不适合服务器环境。

2.Parallel(并行垃圾回收器)

多个垃圾收集线程并行工作,此时用户线程时暂停的,适用于科学计算/大数据处理首台处理等弱交互场景。

3.CMS(并发垃圾回收器)

用户线程和垃圾收集线程同时执行(不一定是并行,可能交替执行),不需要停顿用户线程,互联网公司多用它,适用于对响应时间有要求的场景。

4.G1

G1垃圾回收器将堆内存分割成不同的区域然后并发的对其进行垃圾回收

5.ZGC(Java11,12新增的)

怎么查看默认的垃圾收集器是哪个?

JVM参数:java8默认用的并行垃圾回收器
java -XX: +PrintCommandLineFlags -version
在这里插入图片描述

Java的GC回收的类型主要有几种?

  • UseSerialGC:串行GC。
  • UseParallelGC:并行GC。
  • UseConcMarkSweepGC:并发标记清除GC
  • UseParNewGC:在Young区的并行GC回收方式。
  • UseParallelOldGC:在Old区的并行GC。
  • UseG1GC。 在这里插入图片描述

G1垃圾回收器:

以前收集器的特点:

  • 年轻代和老年代是各自独立且连续的内存块。
  • 年轻代收集使用单eden+SO+S1进行复制算法。
  • 老年代收集必须扫描整个老年代区域。
  • 都是以尽可能少而快速地执行GC为设计原则。

G1收集器,是一款面向服务端应用的收集器,应用在多处理器和大容量内存环境中,在实现高吞吐量的同时,尽可能的满足垃圾收集暂停时间的要求,另外,它还具有以下特性:
像CMS收集器一样,能与应用程序线程并发执行。
整理空闲空间更快。
需要更多的时间来预测GC停顿时间。
不希望牺牲大量的吞吐性能。
不需要更大的Java Heap。

  • G1收集器的设计目标是取代CMS收集器,它同CMS相比,在以下方面表现的更出色;
  • G1是一个有整理内存过程的垃圾收集器,不会产生很多内存碎片。
  • G1的stop The World(STW)更可控,G1在停顿时间上添加了预测机制,用户可以指定期望停顿时间。
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值