垃圾回收
即吞吐量 = 运行用户代码时间 /(运行用户代码时间 + 垃圾收集时间)
首先判断对象是否存活 , 活的对象进行标记 ,
然后进行垃圾回收
1.标记清除算法
标记阶段和清除阶段。标记阶段的任务是标记出所有需要被回收的对象,清除阶段就是回收被标记的对象所占用的空间。
但是容易产生大量碎片
2.复制算法
它将可用内存划分为两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用的内存空间一次清理掉,这样一来就不容易出现内存碎片的问题。
优点:简单,不易产生碎片
缺点:可用内存变少,且如果存活对象较多,则复制的效率会大大降低
3.标记整理算法
该算法标记阶段和Mark-Sweep一样,但是在完成标记之后,它不是直接清理可回收对象,而是将存活对象都向一端移动,然后清理掉边界以外的内存。
优点:不易产生碎片,充分利用可用内存空间
缺点:用户等待时间变长
4.分代回收算法
年轻代一般使用复制算法,年老代一般使用标记整理算法