c# - .Net Framework 中的手动内存分页(可能/如何?)

标签 c# memory-management clr ramdisk

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

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

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

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

最佳答案

有点。您可以使用 memory mapped files在 .NET 中,因此写入“内存”实际上就是写入磁盘。

关于c# - .Net Framework 中的手动内存分页(可能/如何?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12380852/

相关文章:

c# - .NET - 如何创建一个类,以便只有一个其他特定类可以实例化它?

c# - 简单 linq(to objects) 查询的空间复杂度

memory - 如何确定 OpenCL 中的可用设备内存?

c# - ASPX 页面编译失败

c# - 是否可以读取实习生池中的所有字符串?

c# - 配置 TaskCompletionSource 的任务的延续行为

c# - XmlDsigXPathTransform - 命名空间前缀未定义

c# - C# 的 SNI 证书支持

c++ - 为什么或为什么不在 C++ 中使用 memset?

c++ - 关于对象生命周期和释放责任的问题