黄冈做网站技术支持的,佛山市企业网站建设报价,抖音代运营合作模式,上海市建设考核中心网站标记清除
通过遍历GC Root后得到不再被引用的对象#xff0c;对没被引用的对象做一个标记处理#xff0c;然后对其进行清除。 优点#xff1a;速度快 缺点#xff1a;会产生内存碎片#xff0c;可能会导致空闲的内存足够保存对象#xff0c;但由于不连续而保存失败。 标…标记清除
通过遍历GC Root后得到不再被引用的对象对没被引用的对象做一个标记处理然后对其进行清除。 优点速度快 缺点会产生内存碎片可能会导致空闲的内存足够保存对象但由于不连续而保存失败。 标记整理
和标记清除差不多类似但不同的是它会对清理过的内存进行一个整理不会产生内存碎片。 优点没有内存碎片 缺点涉及到内存地址移动如果程序中引用变量的内存地址改变还需要进行修改。速度慢 复制算法
需要两块区域一份From和一份To将From中存活的区域进行一个复制到To区域。 复制完成后清空From所用内存并交换From与To的区域使得To区域保持空 优点不会产生内存碎片 缺点需要双倍的内存空间 分代算法
在JVM中垃圾回收通常是以上三种垃圾回收机制一起使用而不是单独使用一种 新生代中需要保存用完就可以回收的对象清理比较频繁而老年代保存的是需要长久使用的对象因此清理频率低同时清理速度慢。针对不同的区域采用不同的垃圾清理算法。在JVM中使用的就是分代算法
所谓伊甸园就是诞生对象的区域。不管是什么对象都先存储在伊甸园。如下图所示当伊甸园不满足容纳新的对象时会进行一次小的垃圾回收Minor GC会将伊甸园中存活的对象复制到幸存区To中并且记录对象存活次数每执行一次垃圾回收所有没被回收的对象生命值1当生命值超过一定值后最大为15次则会放入老年代区域然后将伊甸园内存清空交换From与To的内存区域。等到下一次执行Minor GC时除了扫描伊甸园存活对象之外还要扫描幸存区From中的对象然后将所有存活的对象存放在幸存区To中后交换From与To的内存区域。 当所有的区域都不能够满足容纳新的对象时先回进行一次Minor GC当回收完依旧无法满足容纳新对象则会进行一次大的垃圾回收Full GC此次回收会对所有的区域进行垃圾回收 当进行垃圾回收时会暂停所用的用户线程stop the world即STW因为涉及到了内存地址变化所以其他线程都会停止等到垃圾回收结束后才会接着进行。