第九周作业
垃圾回收(Garbage Collection,简称GC)是指释放垃圾站用的内存空间,防止内存泄漏。
垃圾的定义是指GC Root无法到达(引用链)的对象。GC Root包括:
虚拟机栈(栈中本地变量表)中引用的对象
方法区中静态类引用的对象
方法区中常量引用的对象
本地方法栈JNI中引用的对象
有四种垃圾回收方法:
标记清除:第一步标记垃圾内存区域 第二步清除标识区域。问题:内存碎片
复制算法:内存分两半,每次用一半。用的一半快满了,就把存活的搬到另一半,搬完后清除当前这一半,如此反复。问题:内存使用率低
标记整理:类似标记清除,第一步标记垃圾内存区域 第二步存活对象前移、搓堆,然后清理掉边界外内存(无用的)
分代收集:融合前三种的方法,对堆内存不同年代的内存(新生代、年老代)采用不同方法
对象产生在Eden
Eden区满了,触发Minor GC。,如果对象太大,From存不下,则直接进old。移动后清空Eden
Eden存活的进Survivor的To
Survivor的From进to,如果对象存活够久(Surviror经历16次交换)则进old
清空Eden和from
交换from和to
如果old或持久代满了,触发major gc/full gc,标记整理算法
评论