如何做带后台的网站,wordpress宠物插件,做公司网站合同,做动画合成的视频网站一、垃圾收集算法 1.分代收集理论 分代收集理论是JAVA虚拟机进行垃圾回收的一种思想#xff0c;根据对象存活周期的不同将内存分成不同的几个区域#xff1b;一般将JAVA堆内存分为新生代和老年代#xff1b;根据每个分代特点选择不同的垃圾收集器#xff1b; 在新生代中根据对象存活周期的不同将内存分成不同的几个区域一般将JAVA堆内存分为新生代和老年代根据每个分代特点选择不同的垃圾收集器 在新生代中每次收集的对象(超过99%)都会立即被清理掉采用复制算法每次只需要付出很少的复制成本就可以完成垃圾收集 在老年代中对象的存活几率较高存活周期较长并且没有额外的空间进行分配担保所以必须选择标记-整理或者标记-清除的算法注意这种算法效率较低会是复制算法的10倍以上
2.标记复制算法
为了解决效率问题采用复制算法将堆内存分成2部分每次使用其中一块当这块使用完了之后就将少数存活的对象复制到另外一块区域之前使用的区域则全部删除
右侧为未使用区域左侧 蓝色存活对象 灰色回收对象白色未使用对象当进内存使用到一半时(左侧用满)将存活的对象复制到右侧左侧全部清空 复制整理后 左侧全部为未使用区域右侧为复制整理后的存活对象
3.标记-清除算法
分为标记和清除2个阶段标记存活的对象统一回收未被标记的对象
问题1.效率低下若标记对象太多效率不高 2.空间问题标记清除后会产生很多空间碎片
标记清除之前 标记清除之后 4.标记-整理算法 根据老年代的特点出的一种标记算法标记过程仍然和标记-清除算法一样后续不是直接清除未标记的对象而是让存活的对象统一移动到内存一端将另一端清除
标记整理之前 标记整理之后