🌈hello,你好鸭,我是Ethan,西安电子科技大学大三在读,很高兴你能来阅读。
✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。
🏃人生之义,在于追求,不在成败,勤通大道。加油呀!
🔥个人主页:Ethan Yankang
🔥推荐:史上最强八股文||一分钟看完我的几百篇博客
🔥温馨提示:划到文末发现专栏彩蛋 点击这里直接传送
🔥本篇概览:详细讲解了G1收集器:区域化分代式(逻辑上分代,物理上分区)——垃圾收集器7。🌈⭕🔥
【计算机领域一切迷惑的源头都是基本概念的模糊,算法除外】
🌈章节引出:
前一篇章:
🌈章节速览:
一、G1收集器
G1(Garbage-First) 是当今收集器技术发展的最前沿成果之一。
既然我们已经有了前面几个强大的垃圾收集器,为什么还要发布G1垃圾收集器呢?原因就在于应用程序所应对的业务越来越庞大、复杂,用户越来越多,没有垃圾收集器不能保证应用程序正常进行,而经常造成STW的垃圾收集器又跟不上实际的需求,所以才会不断地尝试对垃圾收集器进行优化。
why
为了实现在应用程序运行环境内存不断扩大,处理器数量不断增加的情况下,进一步降低停顿时间,同时还能兼顾良好的吞吐量的目标,G1垃圾收集器应运而生。
官方给G1设定的目标是在延迟可控的情况下获得尽可能高的吞吐量,担负着“全功能的垃圾收集器”的重任和期望。
HotSpot垃收集器里,除了G1以外,其他的垃圾收集器使用内置的JVM 线程执行垃圾收集的多线程操作,而G1可以采用应用线程承担后台运行的垃圾收集工作,即当JM的垃圾收集线程处理速度慢时,系统会调用应用程序线程帮助加速垃圾回收过程。
what
G1的空间划分
G1是一款基于并行和并发的收集器,它把堆内存分割为很多区域(Region),它们虽然物理上不连续,但是逻辑上是连续的。然后使用不同的 Region 来表示Eden 区、Survivor0区、Survivor 1 区、老年代等。
G1的回收理念
G1有计划地避免在整个Java堆中进行全区域的垃圾收集。G1跟踪各个Region里面的垃圾堆积的价值大小(回收所获得的空间大小以及回收所需时间的经验值),在后台维护一个优先列表,每次根据允许的收集时间,优先回收价值最大的Region。
由于这种方式的侧重点在于回收垃圾最大量的区间(Region),所以我们给G1取一个名字就是垃圾优先(Garbage First)。
具体的JDK启用G1情况
G1在JDK1.7版本正式启用,是JDK9以后的默认垃圾收集器,取代了CMS收集器以及Parallel/ ParallelOld组合。在JDK8中还不是默认的垃圾收集器,需要使用“-XX:+UseG1GC”来启用。
💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖
热门专栏推荐
🌈🌈计算机科学入门系列 关注走一波💕💕
🌈🌈CSAPP深入理解计算机原理 关注走一波💕💕
🌈🌈微服务项目之黑马头条 关注走一波💕💕
🌈🌈redis深度项目之黑马点评 关注走一波💕💕
🌈🌈JAVA面试八股文系列专栏 关注走一波💕💕
🌈🌈JAVA基础试题集精讲 关注走一波💕💕
🌈🌈代码随想录精讲200题 关注走一波💕💕
总栏
🌈🌈JAVA基础要夯牢 关注走一波💕💕
🌈🌈JAVA后端技术栈 关注走一波💕💕
🌈🌈JAVA面试八股文 关注走一波💕💕
🌈🌈JAVA项目(含源码深度剖析) 关注走一波💕💕
🌈🌈计算机四件套 关注走一波💕💕
🌈🌈数据结构与算法 关注走一波💕💕
🌈🌈必知必会工具集 关注走一波💕💕
🌈🌈书籍网课笔记汇总 关注走一波💕💕
📣非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤收藏✅ 评论💬,大佬三连必回哦!thanks!!!
📚愿大家都能学有所得,功不唐捐!