标签:mamicode 内存 暂停 产生 需要 清除 自动 不用 清理
标记 - 清理 会产生内存碎片
标记 - 整理 : 清除一个地方的内容,后面的内容自动补上
复制算法: 将整个内存一分为二,分别记为1区2区。 当一个区快满的时候,把还没有被标记的内容复制到另外一个区,被标记的代表要删除的,就不用复制了。然后把当前区的内容全部清除。这个时候剩下的内容就都在另外一个区了,而且还是紧凑的。
分为 young区 和 old区
young 区又分为:
S0: 幸存者0区
S1: 幸存者1区
E : 伊甸园区
默认比例为 1 : 1 : 8
因为变量很多都是临时的,所以很容易夭折,所以 E 区就大一些。
S0 与 S1 是交替执行的,
当 E区快满的时候:
把 E + S0 复制到 S1, 复制完之后, E + S0 就可以清除了
把 E + S1 复制到 S0, 复制完之后, E + S1 就可以清除了
交替执行
用的是复制算法
对象怎么才能到 Old 区呢?
一个对象在Young区,经历一次GC,年龄就会增加一岁,当年龄到大16岁了,就会到Old区了。 16是默认值(有的可能还不一样)
当Old区也满的时候,整个Java程序就会暂停,来进行垃圾回收,所以这个GC 又叫 Full GC, 采用的方法就是
标记-清除算法, 标记-整理算法。
内容来自free-coder 这位 UP主,这是链接
标签:mamicode 内存 暂停 产生 需要 清除 自动 不用 清理
原文地址:https://www.cnblogs.com/ytcxy/p/13020681.html