说一下JVM垃圾回收算法

说一下JVM垃圾回收算法,第1张

说一下JVM垃圾回收算法

我们把一块连续的 内存区域划分成大小相等的块,这些块按照使用情况分为 未使用内存(可用内存),可回收内存(死亡对象),存活对象

1.1 标记清除算法

​ 标记死亡对象所在的内存块为可回收内存,然后回收这些内存块

​ 缺点:
1.效率问题 回收后遗留下来的存活对象和未使用内存都是不连续的,下次利用内存块和回收内存块的速度慢

​ 2.空间问题 回收后产生大量不连续的碎片.

1.2 复制算法

​ 内存区域划分为大小相同的两个区域,每次只使用其中一个区域,使用的区域标记清除完后,把还存活的对象以紧邻的方式 复制到另一区域,如此往复

1.3 标记整理算法

把存活对象向一端移动,以紧邻的方式存放 ,然后把其余对象清理掉

1.4 分代收集算法

这是虚拟机垃圾收集采用的算法,

根据对象存活周期不同,划分为几个内存空间。

JVM(java virtual machine)的堆(heap,jvm的内存,线程共享,用于存放对象) 分为新生代(年轻代)和老年代,

新生代又分为伊甸园区(Eden)和 两个幸存者区(survivor1和survivor2),新生代中大量对象死去,少量对象留存,只要付出少量对象的复制成本就可以实现垃圾收集,因此采用 复制算法

老年代 的对象存活几率高,而且没有额外的空间对象进行分配担保,必须选择标记清除或者标记整理算法

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5707973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存