深入理解JAVA虚拟机笔记 - 04
2015-07-23 21:38
375 查看
垃圾收集器简介
Serial收集器最基本的,最悠久的
单线程的:该收集器进行垃圾收集时,必须暂停其他所有工作线程,知道它收集结束(引用原话:你妈妈再给你打扫房间的时候,也会让你老老实实的在一边待着。真的是很形象)
缺点:在用户不可见的情况下把用户正常的工作线程停掉,难以接受
优点:简单高效(个人:粗暴)
ParNew
Serial的多线程版本
缺点:单CPU下并不会超过Serial(一个cpu貌似同一时间只能执行一条线程吧)
优点:能和CMS配合,在多CPU环境下,还是不错的
Parallel Scavenge
新生代收集器,采用复制算法,并行多线程收集器
目标:达到可控制的吞吐量(运行用户代码时间/(运行用户代码时间+垃圾收集时间))Ps:停顿时间越短的越适合与用户进行交互的程序;而高吞吐量的因为能够高效的利用CPU时间,适合后台运算并且不需要太多交互的程序
缺点:不能保证停顿时间
优点:虚拟机能根据当前系统运行情况收集性能监控信息,动态调整参数以提供最适合的停顿时间或最大的吞吐量
Serial Old
Serial 的老年代版本,单线程,标记-整理算法,与Parallel Scavenge配合使用
Parallel Old
Parallel Scavenge 的老年代版本,使用标记整理算法
优点:能够与Parallel Scavenge配合,在注重吞吐量以及CPU资源敏感的场合,可以考虑 Parallel Scavenge + Parallel Old 组合进行垃圾回收
CMS收集器
目标获得最短回收停顿时间(应该是用户体验最好的)
标记-清除算法
过程:初始标记–>并发标记–>重新标记–>并发清除
缺点:
对CPU资源非常敏感
无法处理浮动垃圾(CMS并发阶段产生的垃圾)
标记-清除算法可能产生大量内存空间碎片(解决办法:执行N次垃圾收集之后进行一次碎片整理)
G1收集器
面向服务器端
基本过程:初始标记–>并发标记–>最终标记–>筛选回收
特点
并行与并发
分代收集
空间整合(标记整理算法)
可预测的停顿
Ps:由于这部分我不是特别理解只能大概把书上总结下发上来啦,原谅我这个菜鸟吧
相关文章推荐
- this关键字 #Java#
- Java基础之接口、内部类
- Spring(六)使用构造器装配属性
- Day20 Java使用Socket发送文件
- java中的集合类
- Java Iterator和增强for循环 for each详解
- 如何利用MyEclipse将Java工程导出jar包
- JavaBean的一个小例子
- 2015第30周四Java日志组件
- Java练习题(一)
- DateUtils.java
- 关于javaSocket中 Software caused connection abort: recv failed问题
- Spring AOP 详解
- jdk环境变量的配置
- 解决java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
- 03 JAVA 数组补充 拷贝、序列化
- win7中如何完全卸载已装的JDK
- Java 语言环境配置
- Junit手动/自动加载spring配置文件
- Java错误提示----------