我在 Poly/ML 中的堆调整大小的论文中读到了以下内容。但我不明白堆的大小是如何调整的?谁能更详细地解释一下?
在每次主要 GC(垃圾收集)结束时,都会调用 adjustHeapSize() 方法。此方法动态改变堆大小,因此有特定数量的可用空间。也就是说,假设成熟空间在一次 GC 后立即包含 l MB 的存活数据,则 adjustHeapSize() 将成熟空间大小更改为 K +l MB,其中 K 是预先计算的常数。K 是 gc.cpp 中的 majorGCFree 静态变量的值,设置为 Poly/ML 运行时开始执行时成熟空间的大小。
我了解每次 GC 后都有一定数量的可用空间。但是如何获得堆大小的下一个计算值?什么是 K 以及如何计算 K?为什么将其设置为K + l?