基础JVM垃圾回收工作原理

来源:互联网 发布:特勤精英 知乎 编辑:程序博客网 时间:2024/05/20 03:37

java虚拟机采用的是一种“自适应的、分代的、停止—复制,标记—清扫”式的垃圾回收技术。

停止—复制机制:

首先暂停程序的运行,然后将所有存活的对象从当前堆复制到另一堆,没有复制的全是垃圾。当对象被复制到新堆时,他们是紧凑排列的。
这种方式需要2个堆,从而得维护比实际大一倍的空间。
程序在进入稳定状态时,可能产生的垃圾较少,但复制器仍然会将所有内存复制到另一处。

标记—清扫机制:

遍历所有的引用,标记每一个存活的对象。全部标记工作完成时,没有标记的对象将会被释放。所以剩下的空间是不连续的。同样,标记—清扫也必须在程序暂停的情况下进行。

分代机制:

分代算法把内存分为几块,根据不同块内的对象特点采用不同的垃圾回收机制。新建的对象放入新生代中,新生代中的对象经过几次垃圾回收后,存活的对象放入老年代中。所以老年代中的对象都是较为稳定、生命周期长的对象,再使用停止—复制的方法就不合适了,应采用标记—清扫的方法来进行老年代的垃圾回收。

原创粉丝点击