垃圾回收算法(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在停顿时间上添加了预测机制,用户可以指定期望停顿时间。

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

  1. GC垃圾回收算法三种方式

    收 旧对象,破 对象,用不着的对象,用旧对象 .破对象 .用不着 的 对 象换 盆,换大铝盆,换各种盆...............啊哈哈哈是不是脑袋自动播放了...皮一下 1.判定对象存活算法 在回 ...

  2. 存储器的分配与回收算法实现_垃圾内存回收算法

    (给算法爱好者加星标,修炼编程内功) 来源:施懿民 https://zhuanlan.zhihu.com/p/20712073 常见的垃圾回收算法有引用计数法(Reference Counting). ...

  3. 【JVM】垃圾回收算法与分代回收

    文章目录 1. 垃圾回收算法概述 2. 标记-清除算法 3. 标记-复制算法 4. 标记-整理算法 5. 分代回收 本文参考:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) 1. 垃圾回收 ...

  4. bat判断文件是否存在_BAT面试必问题系列:JVM判断对象是否已死和四种垃圾回收算法总结...

    JVM系列: 面试题一:判断对象是否已死 判断对象是否已死就是找出哪些对象是已经死掉的,以后不会再用到的,就像地上有废纸.饮料瓶和百元大钞,扫地前要先判断出地上废纸和饮料瓶是垃圾,百元大钞不是垃圾.判 ...

  5. Java虚拟机JVM常用的几种回收算法和垃圾回收器

    1. 垃圾回收算法 1.1 "标记-清除"算法 对内存对象进行可达性分析并标记,标记完成后统一回收.书中说有两个不足:①标记和清除效率不高:②内存空间是大量不连续的内存碎片.标记是 ...

  6. Java-JVM虚拟机内存垃圾回收机制gc入门:引用类型,对象标记算法,回收算法,常见的 garbage collector

    文章目录 GC的优缺点 引用的四种类型 对象标记算法 引用计数法 可达性分析法 回收算法 标记-清除算法(Mark-Sweep) 复制算法 标记-整理算法(Mark-Compact) 分代收集算法 常 ...

  7. 了解java虚拟机—垃圾回收算法(5)

    引用计数器法(Reference Counting) 引用计数器的实现很简单,对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当引用失效时,引用计数器减1.只要对象A的引用计数器的 ...

  8. heap c语言数组实现,垃圾回收算法实现之 - 分代回收(完整可运行C语言代码)...

    分代垃圾回收(Mark-Sweep GC),并不是一个具体的算法,只是结合了几种垃圾回收算法,把对象按特点进行了分类,对每种特点的对象集执行不同的回收算法,从而提升回收效率 阅读本文之前,你最好已经了 ...

  9. Java虚拟机(十四)——垃圾回收算法

    文章目录 垃圾回收相关算法 标记阶段 引用计数算法 可达性分析算法(根搜索算法.追踪性垃圾收集) 基本思路: GC Roots 有哪几类? 注意 对象的finalization机制 清除阶段 标记-清 ...

  10. 了解java虚拟机mdash;垃圾回收算法(5)

    引用计数器法(Reference Counting) 引用计数器的实现很简单,对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当引用失效时,引用计数器减1.只要对象A的引用计数器的 ...

最新文章

  1. php 处理ftp常用操作与方法
  2. 2021年春季学期-信号与系统-第十三次作业参考答案-第十小题
  3. Trie树检索字符串
  4. 新建swap分区的规划、挂载和自动挂载示例
  5. element-ui中对话框dialog不显示,仅背景变灰
  6. wxWidgets:wxGridRangeSelectEvent类用法
  7. 第一节、Alex 讲解 python+mysql 交互;
  8. ssm(Spring+Spring mvc+mybatis)Service层接口——IDeptService
  9. Nexus修改admin密码及其添加用户
  10. scala模板写入es_Spark——scala 实用小方法
  11. php 对mvc的认识,【PHP】MVC框架为何这么难! 4年后终于明白了,被ThinkPHP害得!...
  12. 理解一个名词:用户代理(user agent)
  13. php随机函数给字加颜色,四种php随机字生成符串的方法
  14. 开票软件V2.0.49_ZS_20220630开票接口
  15. [绍棠] This In-App purchase has already been bought. It will be restored for free.
  16. 关于聪明与努力的文章.
  17. npm安装包报错,清除一下缓存
  18. hue数据导出到hdfs_如何将智能灯泡迁移到新的Philips Hue Bridge
  19. Vero quibusdam eos alias.
  20. 卷起来的大厂年终奖:网易年终奖888888,真爽啊

热门文章

  1. border英文缩写_CSS编码规范
  2. 人工智能研究 还需打破学科壁垒的"生殖隔离"
  3. C语言powermill二次开发,Powermill二次开发的必要性以及重要性
  4. 1002. 电子编程入门到工程师--重拾信心-单片机一篇入门
  5. R语言 —— 多元线性回归
  6. 均值回归理论,均值回归法则是指万物最终都将回归于其长期的均值
  7. 模平方剩余(二次剩余)与欧拉判别法
  8. 全球十大搜索引擎排名及网址
  9. 微软放弃的Lumia950XL成功用上Win11系统
  10. 关于解决你的计算机配置似乎是正确的的问题