JVM (PART VIII)HotSpot的各种收集器和常见组合
来源:互联网 发布:网络维护58同城 编辑:程序博客网 时间:2024/06/03 21:51
安全点(Safepoint)
一次GC操作是一次地球停转事件(Stop the world event)。这个时候所有的用户进程都会等待GC操作的完成。所以如何才能保证进入GC操作是安全的,SafePoint的选定既不能太少以至于让GC等待的时间太长,也不能过于频繁以至于过分增大运行时的负荷。
如何选取安全点:
安全点的选择以程序“是否具有让程序长时间执行的特征”为标准进行选定的。这些特征是:方法的调用,循环的跳转,异常跳转,具有这些特征的指令才会产生SafePoint。
HotSpot的所有收集器
以下是基于JDK1.7 Update 14之后的HotSpot:
这里一共有7中不同的作用与不同分代的收集器,如果两个收集器之间存在连线,则表示它们可以搭配使用。属于新生代的收集器有(Serial,ParNew,Parallel Scavenge),属于老年代的收集器有(CMS,Serial Old, Parallel Old),
Serial收集器和Serial Old收集器
Serial收集器(新生代)
特点:一个单线程收集器。进行垃圾清理的时候必须暂停其他所有的工作线程,直到它的收集工作完成。(Stop the world event)
算法:复制算法
缺点:用户体验不好(因为Stop the world)。
优点:简单高效,对于单个CPU环境来说没有线程交互的开销。
Serial Old收集器(老年代)
特点:单线程收集器
算法:标记-整理
缺点:用户体验不好(因为Stop the world)。
优点:简单高效,对于单个CPU环境来说没有线程交互的开销。
示意图:
ParNew 收集器和Serial Old收集器
ParNew收集器(新生代)
特点:Serial的多线程版本,除了Serial之外只有它可以和CMS收集器配合使用
算法:复制算法
示意图:
Parallel Scavenge和Parallel Old收集器
特点:吞吐量优先组合
适用:注重吞吐量和CPU资源敏感的场合
Parallel Scavenge(新生代)
特点:吞吐量优先,多线程
算法:复制算法
Parallel Old(老年代)
特点:吞吐量优先,多线程
算法:标记-整理算法
示意图:
CMS收集器
特点:获得最短停顿时间
算法:标记-清除
步骤:
1:初始标记(CMS initial mark)--stop the world event2:并发标记(CMS concurrent mark)3:重新标记(CMS remark)--stop the world event 4:并发清除(CMS concurrent sweep)
主要缺点:
1:对CPU资源非常敏感。
2:无法实现处理浮动垃圾,可能出现“Concurrent Mode Failure”失败而导致一次Full GC的产生。
3:基于“标记-清除”算法,会产生大量空间碎片。
示意图:
- JVM (PART VIII)HotSpot的各种收集器和常见组合
- HotSpot JVM收集器
- JVM(HotSpot) 垃圾收集器
- JVM中Hotspot虚拟机中时常被问及的垃圾收集算法和垃圾收集器
- HotSpot JVM收集器 整理。
- HotSpot JVM里的G1垃圾收集器
- 浅谈JVM(三)——HotSpot垃圾收集器
- JVM (PART VII)垃圾收集器的参数
- 【深入理解JVM】:HotSpot垃圾收集器
- 【理解JVM】JVM内存分块和垃圾收集算法(HotSpot)
- HotSpot的G1收集器
- 【理解JVM】深入浅出JVM垃圾收集(HotSpot)
- HotSpot JVM垃圾收集原理
- HotSpot JVM 垃圾收集原理
- HotSpot JVM垃圾收集原理
- HotSpot JVM 垃圾收集原理
- HotSpot JVM 垃圾收集原理
- HotSpot JVM 垃圾收集原理
- Java中的变量
- leetcode 341. Flatten Nested List Iterator
- 设计模式-原型模式
- hdu5242(贪心&记忆化搜索)
- C++笔记——类的静态成员和静态成员函数
- JVM (PART VIII)HotSpot的各种收集器和常见组合
- 设计模式的基础——类图以及类与类之间的关系
- dedecms判断栏目是否有下级菜单
- 【hibernate】配置hbm2ddl.auto属性
- Elasticsearch 5 Ik+pinyin分词配置详解
- Java编程之Annotation全解析
- gtk图形界面编程day02
- Scala(3)-Traits
- C语言随机获取小写字母