写点什么

第九周作业

用户头像
秦宝齐
关注
发布于: 2020 年 08 月 04 日

垃圾回收(Garbage Collection,简称GC)是指释放垃圾站用的内存空间,防止内存泄漏。



垃圾的定义是指GC Root无法到达(引用链)的对象。GC Root包括:

  • 虚拟机栈(栈中本地变量表)中引用的对象

  • 方法区中静态类引用的对象

  • 方法区中常量引用的对象

  • 本地方法栈JNI中引用的对象



有四种垃圾回收方法:

  1. 标记清除:第一步标记垃圾内存区域 第二步清除标识区域。问题:内存碎片

  2. 复制算法:内存分两半,每次用一半。用的一半快满了,就把存活的搬到另一半,搬完后清除当前这一半,如此反复。问题:内存使用率低

  3. 标记整理:类似标记清除,第一步标记垃圾内存区域 第二步存活对象前移、搓堆,然后清理掉边界外内存(无用的)

  4. 分代收集:融合前三种的方法,对堆内存不同年代的内存(新生代、年老代)采用不同方法



  1. 对象产生在Eden

  2. Eden区满了,触发Minor GC。,如果对象太大,From存不下,则直接进old。移动后清空Eden

  3. Eden存活的进Survivor的To

  4. Survivor的From进to,如果对象存活够久(Surviror经历16次交换)则进old

  5. 清空Eden和from

  6. 交换from和to

  7. 如果old或持久代满了,触发major gc/full gc,标记整理算法



用户头像

秦宝齐

关注

还未添加个人签名 2020.03.26 加入

还未添加个人简介

评论

发布
暂无评论
第九周作业