JVM GC总结
来源:互联网 发布:windows pe有什么用 编辑:程序博客网 时间:2024/06/12 23:24
前言
总结了一下jvm gc的各种概念。理解GC的各个概念层次应该是:
判断对象已死–>回收算法–>根据算法实现的垃圾回收器分类, 这样更好理解;
判断对象是否可回收方法
引用计数器
当前对象如果有引用则+1,取消引用-1,当为0时回收。
可达性分析算法
通过根”GC Roots“的对象做为起点,往下搜索, 搜索的路径为引用链,没有在引用链上的对象都是可回收对象。
垃圾回收算法
标记-清除算法
最基础的算法,先标记已死对象,在清除对象,缺点容易产生内存碎片。
标记-整理算法
基于标记-清楚算法,清除时对内存空间进行整理,在清除。
复制算法
把内存一分为二,一半用于生产,发生GC时,把还活着的对象复制到另一半内存空间,整体清理掉之前的一半。缺点是把内存缩小了一半。
分代收集算法
分代收集是把堆分为新生代和老年代,根据不同的分区用不同的算法,新生代使用复制算法,老年代使用标记-整理或者标记-清除算法。
GC回收器分类
新生代
Serial:最基本的,单线程执行,运行时必须停止所有其他线程。(复制算法)
ParNew:Serial的多线程版本(并行、复制算法)
Parrallel Scavenge: 多线程并行的收集器,类似ParNew,不同的是他的关注点是吞吐 量;所谓吞吐量就是CPU用于运行用户代码的时间与CPU总
消耗时间的比值,即吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间),虚
拟机总共运行了100分钟,其中垃圾收集花掉1分钟,那吞吐量就是99%。(复制算法)老年代
Serial old:Serial的老年代版本(标记-整理算法)
Parallel old:Parrallel Scavenge老年代版本(标记-整理算法)
CMS:(Concurrent Mark Sweep)是一种以获取最短回收时间为目标的收集器并且是并发执行的,即系统停顿时间最短。(标记-清除算法)G1收集器
G1是不在区分单独的新生代老年代的收集器,主要是内存布局的差别;G1把整个java堆分成多个大小相等的独立区域,命名为Region。之所以说G1是最好的收集器,原因是它可避免在整个堆中进行垃圾回收,G1是跟踪各个Region里面的垃圾堆积大小,优先回收价值最大的Region(可回收空间最大)。整体看是(标记-清理算法),局部看是(复制算法)。
参考文献《深入理解java虚拟机 第二版》
- JVM-GC总结-算法
- JVM GC总结
- JVM GC总结
- JVM-GC总结-算法
- JVM GC总结
- JVM-GC总结
- Sun JVM GC总结【Final】
- JVM GC调优总结
- java jvm gc算法总结
- java jvm gc算法总结
- 关于JVM的gc总结
- jvm的GC算法总结
- 关于JVM的GC总结(涉及GC算法)
- jvm的GC的一些学习总结
- jvm的GC的一些学习总结
- JVM-GC总结—基本概念篇
- JVM-GC总结-垃圾收集器
- 关于JVM的GC机制的总结
- 支付开发者联系方式
- 在 JNI 编程中避免内存泄漏
- 会话技术
- 应用闪退后,自己恢复过来的时候,fragment嵌套的子fragment没有恢复问题
- CRC校验
- JVM GC总结
- spring之ioc底层原理
- jsp
- 名企笔试:网易游戏2017招聘笔试题(调整队形)
- 制作你的第一个 Atom 文本编辑器插件
- iOS 开发调用相机以及获取相册照片功能
- 在项目中使用swagger
- fuel ux的treeView二次加载时出不来的问题解决
- 拆解 MySQL 的高阶使用与概念