.Net框架中的手动内存分页(可能/如何?)

时间:2012-09-12 03:33:18

标签: c# memory-management clr ramdisk

我对编写数据库管理系统很感兴趣。阅读了几页关于如何实现SQL Server 2000的内容,我发现使用了4KB内存页,每个页都是硬盘上4KB页面的直接副本。这些页面根据需要加载到RAM中,然后在它们闲置时懒得写回磁盘(过度简化)。

在项目的计划阶段,我想知道在CLR上运行的代码中是否可以实现这种级别的控制。我意识到C,C ++或D可能更适合这项任务,但我想首先向我自己证明。这背后的部分动机是我最终希望用自己的数据库作为堆来覆盖CLR垃圾收集器,至少对于相对陈旧的对象。

是否可以直接从CLR控制内存?如果是这样,我该怎么做?

现在假设我的数据是一堆256字节宽的结构/类,存储在磁盘上的平面表中,而我使用的是64KB页面。

1 个答案:

答案 0 :(得分:2)

排序。您可以在.NET中使用memory mapped files,以便写入“内存”实际上是写入磁盘。