GC垃圾回收,不能手动,只能自动,但是可以提醒

gc的作用范围:堆中
GC垃圾回收
在JVM进行GC时,并不是对这新生区,养老区和永久区都进行GC,回收的都是新生代。
GC的两种:轻GC(普通的GC),重GC(全局的GC)

GC的算法主要有:标记清除法,标记压缩法,复制法,引用计数器法
以下是引用计数器法,耗时,耗资源,因为要进行标记操作和预留标记的位置。
GC垃圾回收
复制法
GC垃圾回收
GC垃圾回收
1(绿色表示的是垃圾),From上移**”准备“接受伊甸园的垃圾,交换to区和from区,(如果来自伊甸园区的垃圾存活)就进入from区,不存活就直接清除,同时原来在from区的垃圾一样进行GC。如果还是存活就继续留在from区,否则就清理掉,默认累计15次存活就会进入养老区(通过修改存活的次数来调优)
好处:没有碎片残留,但是只有一个幸存区在实行功能,减少了利用效率。to区永远是空的
使用场景:对象存活率较低的区域使用,例如
新生区**

标志清除法:给要存活的对象进行一个标志,扫描整个区,一律清除要没有标志的对象
GC垃圾回收
好处:区的利用率高,不会像是复制法只是利用到了一个区,不需要额外的区域配合。
坏处:产生 了碎片化的内存,两次扫描(第一次标记,第二次清除)
**标志压缩GC垃圾回收对标记清除的进一步优化,对碎片的内存进行一个排序,向一端移动数据,腾出一端的空白连续的内存。

GC总结:
内存效率:复制算法>标记清除法>标记压缩算法(时间复杂度)
内存效率:复制算法=标记压缩算法>标记清除法
内存效率:标记清除法=标记压缩算法>复制算法

年轻代:存活率低,用复制算法。老年代:区域大,存活率大,用标记清除+标记压缩混合实现。

相关文章:

  • 2022-12-23
  • 2021-07-08
  • 2021-04-24
  • 2021-11-24
  • 2021-10-22
  • 2022-01-10
  • 2021-07-20
猜你喜欢
  • 2021-05-27
相关资源
相似解决方案