手机网站定制 杭州,南平住房和城乡建设部网站,建设个人网银网站,企业网站html模板免费下载文章目录 垃圾回收算法引用计数法可达性分析算法 jvm垃圾回收算法标记清除算法标记整理算法复制算法本章总结 JVM中的分代回收本章总结 JVM有哪些垃圾回收器#xff1f;1.串行垃圾收集器2.并行垃圾收集器3.CMS#xff08;并发#xff09;垃圾收集器本章小结 详细聊一下G1垃圾… 文章目录 垃圾回收算法引用计数法可达性分析算法 jvm垃圾回收算法标记清除算法标记整理算法复制算法本章总结 JVM中的分代回收本章总结 JVM有哪些垃圾回收器1.串行垃圾收集器2.并行垃圾收集器3.CMS并发垃圾收集器本章小结 详细聊一下G1垃圾回收器年轻代垃圾回收本章小结 垃圾回收算法
难易程度★★★★☆ 出现频率★★★★☆ 如果要定位什么是垃圾有两种方式来确定第一个是引用计数法第二个是可达性分析算法
引用计数法
引用计数法刚开始
引用计数法后面出现这种情况会泄漏内存
可达性分析算法 jvm垃圾回收算法
难易程度★★★☆☆ 出现频率★★★★☆
标记清除算法 标记整理算法 复制算法 本章总结
JVM 垃圾回收算法有哪些
标记清除算法 垃圾回收分为2个阶段分别是标记和清除,效率高,有磁盘碎片内存不连续标记整理算法标记清除算法一样将存活对象都向内存另一端移动然后清理边界以外的垃圾无碎片对象需要移动效率低复制算法将原有的内存空间一分为二每次只用其中的一块,正在使用的对象复制到另一个内存空间中然后将该内存空间清空交换两个内存的角色完成垃圾的回收;无碎片内存使用率低
JVM中的分代回收
难易程度★★★☆☆ 出现频率★★★★☆
发现只有A能存活其他BCDE都要被回收先把能存活的对象放到To区因此A首先被放到To区清除剩下不能存活的对象全部垃圾回收掉 把A复制到TO区域之后后面又来了1,2,3,4,5区域后面又要再次进行垃圾回收了标记存活对象复制到From区 复制到From区之后如下图 后面又来了q,w,e,r,t区域内存再次不足需要再次垃圾回收 又把存活的W复制到To把历经数次GC之后依然能够存活的对象放到老年代中。 这里MixedGC等于major GC
本章总结 JVM有哪些垃圾回收器
难易程度★★★★☆ 出现频率★★★★☆
在jvm中实现了多种垃圾收集器包括
串行垃圾收集器并行垃圾收集器CMS并发垃圾收集器G1垃圾收集器
1.串行垃圾收集器
到达一个安全点之后有一个线程负责垃圾回收java应用中所有线程全部阻塞STWstop the world
2.并行垃圾收集器
原来多个线程正常运行到达一个安全点之后多个线程负责垃圾回收并且其他java应用的线程全部阻塞STWstop the world
3.CMS并发垃圾收集器
CMS垃圾回收器主要是针对老年代 垃圾回收的 初始标记是运用可达性分析算法标记GC-ROOT标记哪些是存活的对象此时会阻塞其他线程然后并发标记此时其他线程正常运行 并发标记阶段追踪当前引用链查看与A关联到的对象比如Bcd这些个都是存活的对象不能被垃圾回收 重新标记阶段存在的原因是并发标记阶段可达性分析算法分析出来X不可达后面因为代码一直在运行也可能导致有引用引用了X因此还需要多一个“重新标记”
本章小结 详细聊一下G1垃圾回收器
难易程度★★★★☆ 出现频率★★★★☆ 年轻代垃圾回收
这里G1的年轻代回收其实就是前面提到的分代回收机制 E是EdenS是survivorO是Old E是EdenS是survivorO是Old 老年代阈值超过45% 时触发CMS并发标记并发标记阶段无需STW但是重新标记阶段会STW处理漏标的对象 混合垃圾回收是把老年代里面回收价值较高的对象连同年轻代里面的Eden区Survivor区一起进行垃圾回收这就是mixed Collection Eden区和To区复制到From区From区域原来的对象复制到新的老年代Old中 下图标红的是老年代Old里面回收价值高的对象一起回收了 如果一个对象太大了一个区域装不下会存储到一个巨型对象中分配一个连续的区域存储巨型对象
本章小结
详细聊一下G1垃圾回收器
应用于新生代和老年代在JDK9之后默认使用G1划分成多个区域每个区域都可以充当 edensurvivorold humongous其中 humongous 专为大对象准备采用复制算法响应时间与吞吐量兼顾分成三个阶段新生代回收(stw)、并发标记(重新标记stw)、混合收集如果并发失败即回收速度赶不上创建新对象速度会触发 Full GCFull-GC的话用户暂停时间较长长时间STW