我正在为一种语言编写一个垃圾收集器,我不确定我应该使用哪些Win32 API调用来为Cheney算法分配to-from-space。以下是正确的方法,如果没有,那么正确的方法是什么?
初始化
现在我正在考虑p = q = VirtualAlloc(NULL, dwSize, MEM_RESERVE, PAGE_READWRITE)
以便分配两个半空间,每个半空间大小为dwSize/2
。不确定我是否应该使用MEM_RESERVE
og MEM_COMMIT
?
分配
每当需要分配时,我都可以VirtualAlloc(q, sizeOfObj, MEM_COMMIT, PAGE_READWRITE)
(假设我在初始化时MEM_RESERVED
),然后递增q
。
垃圾收集
将所有内容移到空间后,我可以使用VirtualFree(p, dwSize/2, MEM_DECOMMIT)
释放内存。 MEM_DECOMMIT
是正确的方法吗?
必要的链接: