1、Serial Old 收集器(-XX: +UseSerialOldGC, 标记-整理算法)

1.1 单线程收集,进行垃圾收集时,必须暂停所有工作线程

1.2 简单高效,Client模式下默认的老年代收集器

2、Parallel Od收集器(-XX: +UseParallelOldGC  ,标记-整理)

2.1 JDK6 之后才有这个收集器,多线程,吞吐量优先,如果注重CPU资源和吞吐量的场合,可以使用这个组合 Parallel Scavenge + Parallel Old 收集器

3、CMS收集器(这个收集器,占据了老年代收集器的半壁江山。-XX:+ UseConcMarkSweepGC ,标记-清除算法,有碎片产生)

优点:几乎可以和用户线程做到同时工作,本质还是要STOP-THE WORLD,只是停顿时间短

如果在老年代中存活更多存活率高的对象,使用CMD收集器更适合

收集流程:(一边掉垃圾一边打扫)

初始标记:stop-the-world,从垃圾回收的根对象开始,只是扫描和根对象有关联的对象并做标记。虽然暂停了所有的线程工作,但是停顿时间很短。

并发标记:并发追随标记,程序不会停顿

并发预清理:查找执行并发标记阶段从年轻代晋升到老年代的对象

重新标记:暂停虚拟机,扫描CMS堆中的剩余对象

并发清理:清理垃圾对象,程序不会停顿

并发重置:重置CMS收集器的数据结构

4、G1收集器(-XX:+UseG1GC , 复制+标记-整理算法)

Garbage First 收集器的特点

4.1 并发和并行

4.2 分代收集

4.3 空间整合

4.4 可预测的停顿

说明:这个收集器的内存布局与其他收集器有很大区别

将整个JAVA堆内存划分成多个大小相等的Region

年轻代和老年代不再物理隔离

额外知识:JDK11 有 Epsilon GC 和 ZGC (研发阶段)

问题:为什么年轻代中的Parallel Scavenge收集器不能和老年代中的CMS收集器一起工作呢?

---》因为Parallel Scavenge收集器(G1)都没有使用传统的GC收集器代码框架,都是另外独立开发的。

而Serial,parNew,CMS都有使用了部分相同的收集器代码框架,所有他们三个是兼容的。

(CMS是hotsport在jdk5才出来的真正意义上是并行收集器,第一次让垃圾收集线程和用户线程一起工作。)

java 老年代回收_Java垃圾回收之老年代垃圾收集器相关推荐

  1. java 强制垃圾回收_Java垃圾回收机制

    Java垃圾回收机制 垃圾回收机制用到finalize.当程序创建对象.数组等引用类型实体时,系统都会在堆内存中为之分配一块内存区,对象就保存在这块内存中,当这块内存不再被任何引用变量引用时,这块内存 ...

  2. java list clear 垃圾回收_java垃圾回收机制

    1.什么是垃圾回收? 程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理就会一直占有内存资源,最终将导数内存溢出,所以内存资源的管是非常重要了. 1.1.C/C++语言的垃圾回收 在C/C+ ...

  3. java list clear 垃圾回收_Java垃圾回收

    1.标记-清除算法 这种收集器首先遍历对象图并标记可到达的对象,然后扫描堆栈以寻找未标记对象并释放它们的内存.这种收集器一般使用单线程工作并停止其他操作. 复制算法 这种收集器将堆栈分为两个域,常称为 ...

  4. java垃圾回收_Java垃圾回收机制

    垃圾回收的意义 如果不进行垃圾回收,内存迟早会被消耗空. 垃圾回收机制的引入可以有效的防止内存泄露.保证内存的有效使用,也减轻了 Java 程序员的对内存管理的工作量. 内存泄露:指该内存空间使用完毕 ...

  5. java如何保证类不被回收_Java垃圾回收机制

    大部分转自:http://blog.csdn.net/zsuguangh/article/details/6429592 1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用, ...

  6. java 垃圾回收手动回收_Java垃圾回收(2)

    java 垃圾回收手动回收 并行清理 今天,我们介绍了并行GC的工作原理. 具体来说,这是在Eden上运行并行Scavenge收集器,在Tenured一代上运行Parallel Mark and Sw ...

  7. java 垃圾回收手动回收_Java垃圾回收(4)

    java 垃圾回收手动回收 G1:垃圾优先 G1收集器是热点JVM中要实现的最新收集器. 自Java 7 Update 4以来,它一直是受支持的收集器.OracleGC团队也公开表示,他们对低暂停GC ...

  8. java 多线程垃圾回收_Java 垃圾回收

    Java 垃圾回收 1 什么是Java 垃圾回收 在Java中,垃圾意味着未引用的对象. 垃圾回收是自动回收运行时未使用的内存的过程.换句话说,这是销毁未使用对象的一种方法. 我们在C语言中使用fre ...

  9. java 静态数组 垃圾回收_java垃圾回收

    参考文献: 1.垃圾收集算法的核心思想 Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象.该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引 ...

最新文章

  1. Cocos2d-x手机游戏开发行业背景分析
  2. Codeforces Round #596 Div. 2 C ~E
  3. IsWow64Process 判断操作系统位数
  4. Jmeter JDBC Request执行多条SQL语句
  5. 添加文字 高德地图_教您,如何在高德和腾讯定位自己的店铺位置
  6. Ubuntu 10.04下更行新内核
  7. html5文章标题定格,HTML5最佳做法; 部分/标题/旁边/文章元素
  8. Java数据库编程技术 第三章习题
  9. 潜利KINGLEE触摸屏维修喷码机显示屏电脑
  10. 移动端分享链接给微信好友
  11. 苹果手机软件升级密码_给iOS应用设置一个密码锁
  12. html在表格输入文字不显示,Word表格中有部分格子内无法输入文字是怎么回事?...
  13. 小雷的冰茶几(并查集)
  14. android TVBOX OTT IPTV
  15. Tomcat7 配置Https双向证书认证
  16. DorisDB系列文档(三)基本原理
  17. 数字逻辑实验|逻辑函数及其描述工具(Logisim)
  18. 跑步运动耳机哪个牌子好,值得推荐的六款跑步运动耳机
  19. 第三方支付重新洗牌,拉卡拉支付能否激流勇进?
  20. 秋招深信服技术服务1面过2面挂

热门文章

  1. 如何高效的通过BP算法来训练CNN
  2. SqlServer判断表是否存在
  3. 学习官方示例 - System.TClass
  4. MOSS User Profile(一):获取和遍历
  5. sqlserver 编辑、修改字段说明(备注) sp_addextendedproperty
  6. android studio无线真机调试------Android
  7. php array_multisort对数据库结果多个字段进行排序
  8. 同步方法和同步代码块
  9. ListView 异步更新出现问题的解决(Handler)
  10. [转]《JAVA与模式》之责任链模式