方法区:用于存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
堆:用于存储对象实例,数组等,是垃圾回收器管理的主要区域。...标记-清除:标记出可达对象,之后清除未标记的对象,这会产生大量内存碎片。
标记-复制:将内存分为两块,每次只用其中一块。标记可达对象后,将存活对象复制到另一块内存,然后清除上一块内存。...标记-整理:标记可达对象后,对未标记对象进行清理,并对存活对象进行整理,使它们在一端连续。...该算法的实现过程如下:
GC Roots向下搜索,标记可达对象。
重复1,直到没有新的可达对象产生。
清除未标记的对象,实现内存回收。
可用内存变为未标记对象占用的内存空间。...整理阶段:将所有存活对象向一端移动,然后清除端边界以外的内存。
设置一个指针,指向未清理的内存起始地址,作为下次分配内存时使用。
可用内存变为未标记对象占用的内存空间,没有产生内存碎片。