网页设计与网站建设教材,太原免费网站建设,阿里云个人域名备案,显示网站翻页代码本质一、算法1、哪些是垃圾#xff1f;引用计数法#xff1a;reference countPython中使用了。个对象如果没有任何与之关联的引用#xff0c;即他们的引用计数都不为 0#xff0c;则说明对象不太可能再被用到#xff0c;那么这个对象就是可回收对象。漏洞#xff1a;循环…本质一、算法1、哪些是垃圾引用计数法reference countPython中使用了。个对象如果没有任何与之关联的引用即他们的引用计数都不为 0则说明对象不太可能再被用到那么这个对象就是可回收对象。漏洞循环引用根可达性算法Root Searching如果在“GC roots”和一个对象之间没有可达路径则称该对象是不可达的。要注意的是不可达对象不等价于可回收对象不可达对象变为可回收对象至少要经过两次标记过程。两次标记后仍然是可回收对象则将面临回收。例main函数中的成员变量顺着引用开始找找不到的都是垃圾2、什么时候清除3、用什么方式清除标记清除 Mark-Sweep缺陷内存碎片化泄漏拷贝 Copying漏洞浪费内存标记整理 Mark-Compact漏洞性能低分代算法堆内存逻辑分区二、垃圾收集器三种算法都有毛病三种的综合应用诞生了各种各样的垃圾回收器MinGC YGCMaGC FullGC垃圾收集器随着内存大小的不断增长而演进 内存分代JDK1.8之前使用分代模型新生代采用复制算法老年代使用标记清除和标记整理算法。Serial Serial Old针对几兆-几十兆STWa stop-the-worldcopying collector which uses a single GC threadSerial单线程STW垃圾回收 年青代 老年代Parallel Scavenge Parallel Oldpspojdk1.8默认垃圾回收器几十兆-上百兆1GParallel并行多线程Concurrent GCGC线程和业务线程同时运行初始标记需要STW只需要找到根root上的对象并发标记业务GC并行一定会有标错 重新标记需要STW清理上一步标错的并发清理清除上一步标错的三色标记法算法ParNewCMS1.51.61.7几十GCMS方案incremental Update的非常隐蔽的问题并发标记产生漏标CMS的remark阶段必须从头扫描一遍内存不分代Epsilonjdk11诞生什么都不干仅作记录作用1、开发JVM的人做debug用2、内存超级大根本用不完可以使用G11.7诞生但不成熟1.8可使用逻辑上分代物理上不分代G1的内存区域不是固定的E或者O分区算法部分回收每个区大小为1-32,2的倍数一边清理一部分区域一边占用一部分区域特别大的对象放Humongous区域也不够了开始FullGC毛病一次回收需要回收整个逻辑上的年青代STW时间过长ZGCzero paused GCjdk11引入甲骨文官方支持颜色算法Colored PointerLoad Barrier分区更灵活1M、2M、8M等逻辑上不再分代每100ms触发一次GC每次找到特别满的区域进行清除Shenandoash jdk12引入开源领域贡献