C#GC.调用VirtualAlloc和VirtualFree Win32函数会导致页面交换吗?

Bop*_*Bop 0 c# garbage-collection

MSDN表示GC调用Win32 VirtualAlloc函数来保留内存段并调用Win32 VirtualFree将段释放回操作系统.

这是否意味着每次分配/释放的段都会生成页面错误(软或硬 - 取决于内存可用性).

这是正确的解释吗?

Tim*_*son 6

分配的块内的各个页面VirtualAlloc通过软页面错误提交.VirtualFree然而,没有理由要求引起页面错误,因为它只是簿记.

这并不是说GC分配总是导致页面错误:在没有内存泄漏的情况下,GC将收集垃圾,并在从操作系统请求更多内存之前重新使用属于该数据库的堆的部分.