java 老年代回收_Java垃圾回收之老年代垃圾收集器
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垃圾回收之老年代垃圾收集器相关推荐
- java 强制垃圾回收_Java垃圾回收机制
Java垃圾回收机制 垃圾回收机制用到finalize.当程序创建对象.数组等引用类型实体时,系统都会在堆内存中为之分配一块内存区,对象就保存在这块内存中,当这块内存不再被任何引用变量引用时,这块内存 ...
- java list clear 垃圾回收_java垃圾回收机制
1.什么是垃圾回收? 程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理就会一直占有内存资源,最终将导数内存溢出,所以内存资源的管是非常重要了. 1.1.C/C++语言的垃圾回收 在C/C+ ...
- java list clear 垃圾回收_Java垃圾回收
1.标记-清除算法 这种收集器首先遍历对象图并标记可到达的对象,然后扫描堆栈以寻找未标记对象并释放它们的内存.这种收集器一般使用单线程工作并停止其他操作. 复制算法 这种收集器将堆栈分为两个域,常称为 ...
- java垃圾回收_Java垃圾回收机制
垃圾回收的意义 如果不进行垃圾回收,内存迟早会被消耗空. 垃圾回收机制的引入可以有效的防止内存泄露.保证内存的有效使用,也减轻了 Java 程序员的对内存管理的工作量. 内存泄露:指该内存空间使用完毕 ...
- java如何保证类不被回收_Java垃圾回收机制
大部分转自:http://blog.csdn.net/zsuguangh/article/details/6429592 1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用, ...
- java 垃圾回收手动回收_Java垃圾回收(2)
java 垃圾回收手动回收 并行清理 今天,我们介绍了并行GC的工作原理. 具体来说,这是在Eden上运行并行Scavenge收集器,在Tenured一代上运行Parallel Mark and Sw ...
- java 垃圾回收手动回收_Java垃圾回收(4)
java 垃圾回收手动回收 G1:垃圾优先 G1收集器是热点JVM中要实现的最新收集器. 自Java 7 Update 4以来,它一直是受支持的收集器.OracleGC团队也公开表示,他们对低暂停GC ...
- java 多线程垃圾回收_Java 垃圾回收
Java 垃圾回收 1 什么是Java 垃圾回收 在Java中,垃圾意味着未引用的对象. 垃圾回收是自动回收运行时未使用的内存的过程.换句话说,这是销毁未使用对象的一种方法. 我们在C语言中使用fre ...
- java 静态数组 垃圾回收_java垃圾回收
参考文献: 1.垃圾收集算法的核心思想 Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象.该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引 ...
最新文章
- Cocos2d-x手机游戏开发行业背景分析
- Codeforces Round #596 Div. 2 C ~E
- IsWow64Process 判断操作系统位数
- Jmeter JDBC Request执行多条SQL语句
- 添加文字 高德地图_教您,如何在高德和腾讯定位自己的店铺位置
- Ubuntu 10.04下更行新内核
- html5文章标题定格,HTML5最佳做法; 部分/标题/旁边/文章元素
- Java数据库编程技术 第三章习题
- 潜利KINGLEE触摸屏维修喷码机显示屏电脑
- 移动端分享链接给微信好友
- 苹果手机软件升级密码_给iOS应用设置一个密码锁
- html在表格输入文字不显示,Word表格中有部分格子内无法输入文字是怎么回事?...
- 小雷的冰茶几(并查集)
- android TVBOX OTT IPTV
- Tomcat7 配置Https双向证书认证
- DorisDB系列文档(三)基本原理
- 数字逻辑实验|逻辑函数及其描述工具(Logisim)
- 跑步运动耳机哪个牌子好,值得推荐的六款跑步运动耳机
- 第三方支付重新洗牌,拉卡拉支付能否激流勇进?
- 秋招深信服技术服务1面过2面挂
热门文章
- 如何高效的通过BP算法来训练CNN
- SqlServer判断表是否存在
- 学习官方示例 - System.TClass
- MOSS User Profile(一):获取和遍历
- sqlserver 编辑、修改字段说明(备注) sp_addextendedproperty
- android studio无线真机调试------Android
- php array_multisort对数据库结果多个字段进行排序
- 同步方法和同步代码块
- ListView 异步更新出现问题的解决(Handler)
- [转]《JAVA与模式》之责任链模式