【发布时间】:2020-05-29 00:09:24
【问题描述】:
假设我们正在使用标记清除垃圾收集算法,如果我们能够将内存分配标记为“可回收”,这还不够吗?难道程序不知道“可回收”内存基本上是可以在请求时分配的未使用内存吗?如图所示,“可回收”块与“未使用”块之间的物理差异是什么:
【问题讨论】:
-
有一种标记和不扫描收集器。你读过它吗?也许通过比较和对比这些方法,您会找到答案
-
@Michael 这些“mark-and-don't-sweep 收集器”只是将清扫推迟到分配器必须搜索未标记内存时,这在技术上与清扫相同。鉴于此类算法通常由分配失败触发,因此分配器必须在标记后立即搜索第一个可用块,即使是惰性也不一定给出。所以它只是同一事物的另一个名称。