MarkSweep标记清除法
1:标记阶段:标记垃圾内存
2:清除阶段:直接将垃圾内存回收
最坏结果:会产生大量内存碎片,总容量足够但是都是碎片空间,无法容纳!!
Copying拷贝算法
将内存分为大小相等的两半,每次只使用其中一半。垃圾回收时,将这一块的存活对象全部拷贝到另一半,然后可以清除当前这一半内存。
没有内存碎片。但是浪费内存空间!效率与存活对象数量相关,数据庞大,
MarkCompack标记压缩算法
标记清除法的基础上将存留对象移动到一块,空余多余空间!!
具体:标记后不会立即删除,而是将存活对象整理到一端,之后清除其他对象!
算法复杂!
垃圾回收器
SWT:将jvm中内存冻结的一种状态!!停止所有内存使用,所有进程线程停止运行,GC除外!native方法可以执行,底层用c++等与jvm无关!即两者不可交互!
JVM的垃圾回收器:
1:分代算法:划分为新生代、老年代
2:不分代算法: