【javm】 -浅谈垃圾收集器(gc)
一堆介绍堆主要划分为新生代和老年代;详细划分为Eden,fromsurvivor ,to survivor;二jdk1.8-jvm内存模型要看详细的介绍情看的介绍请看作者发布的"jvm运行时数据区一文",jdk1.8中已经取代了方法区永久带的概念转而的是在方法区中的元空间,有人也称作是直接内存。二垃圾收集器示意图图中有直线连接的说明是能够相互配合使用的垃圾收集器。三垃圾收...
·
一堆介绍
堆主要划分为新生代和老年代;新生代详细划分为Eden,from survivor ,to survivor;
二jdk1.8-jvm内存模型
要看详细的介绍请看作者发布的"jvm运行时数据区一文",
jdk1.8中已经取代了方法区永久带的概念转而的是在方法区中的元空间,有人也称作是直接内存。
二垃圾收集器示意图
图中有直线连接的说明是能够相互配合使用的垃圾收集器。
三垃圾收集器介绍
算法的实现请自行搜索理解,本文不赘述。
3.1serial收集器
serial收集器(新生代)是单线程复制算法工作,当发生gc的时候,所有线程都会停止,然后进行垃圾回收,这就是为什么java程序运行卡顿的原因,the stop world因此而来
3.2ParNew收集器
ParNew收集器(新生代)其实就是Serial收集器的多线程版本,采用复制算法,参数选定和serial一样。
3.3Parallel Scavenge收集器
Parallel Scavenge收集器(新生代)复制算法;目标是达到一个可控的吞吐量(示例:99%吞吐量用来跑用户代码,1%GC)提升cpu利用率让客户有良好体验,,吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间。
3.4 Serial Old 收集器
Serial Old 收集器是Serial 的老年代版本,采用标记整理算法。
3.5 Parallel Old 收集器
Parallel Old是Parallel Scavenge收集器的老年代版本,使用多线程和标记-整理算法。这个收集器是在JDK 1.6中才开始提供。
3.6 CMS收集器
CMS(Concurrent Mark Sweep)收集器基于标记—清除算法实现的收集器,是一种以获取最短回收停顿时间为目标的收集器。主要优点是并发收集,低停顿,在cpu多核的情况下性能较好。
3.7G1收集器
G1(Garbage-First)从整体来看是基于“标记—整理”算法实现的收集器,能够实现并发并行,对cpu利用率较高,减少停顿时间。目标是取代jdk1.5发布的CMS收集器。
四gc类型和日志
具体使用gc和其他jvm参数会在后面的jvm调优文章中发布。
4.1GC 种类
gc 种类分为2种 ,一是新生代发生的GC(Minor GC),当经过一轮Minor GC 后 如果没有配置其他JVM参数,那么 存活的对象会进入老年代,当老年代的空间满了之后就会发生Full GC;Full GC 会产生Stop the World 代价相对比较大,如果你的项目中经常出现Full GC ,说明需要jvm调优了。
4.2图解GC日志

五参考文档和公众号
《深入理解java虚拟机》

更多推荐


所有评论(0)