c - 我应该管理页面还是只依赖虚拟内存?

标签 c memory memory-management

我正在用 C 编写一个数据库样式的东西(即它将存储和操作大约 500,000 条记录)。我将在内存受限环境 (VPS) 中运行它,因此我不希望内存使用量激增。我不会处理大量数据 - 总共可能高达 200MB,但我希望内存占用保持在 30MB 左右(将这些数字从空中拉出来)。

我的直觉是做我自己的页面处理(真正的数据库这样做),但我收到的建议是我应该只分配所有页面并允许操作系统为我执行 VM 分页。我的数字永远不会超过这个数量级。 在这种情况下哪个是最佳选择?

假设第二种选择,程序在什么时候进行自己的分页是明智的?显然,可以处理千兆字节的 RDBMsses 必须这样做,但必须有一个问题值得提出的规模。

谢谢!

最佳答案

使用 malloc 直到它运行。 然后并且只有那时,开始分析。如果遇到与专有和主流“真实数据库”相同的性能问题,您自然会开始执行缓存/页面/对齐优化。在您拥有一个可用的数据库之后,这些东西可以很容易地插入,并且与拥有一个可用的数据库是正交的。

关于c - 我应该管理页面还是只依赖虚拟内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3308075/

相关文章:

c - 下面的程序在比较字符串时异常终止,为什么?

c - C中使用函数进行堆栈操作

c - 为什么我在使用 GCC 编译时不必包含我的头文件?

php - 使用 MySQLi - 更适合关闭查询

c - 内存地址计算在 "Smashing The Stack For Fun And Profit"

c++ - 如何知道指针是否在物理内存中,否则会触发页面错误?

c - 将 int arg 转换为 double 的 Gcc 编译器选项?

python - Python:无法复制内存使用情况的测试

c - 了解 memcpy 在内存分配中的使用

c - AES_cbc_encrypt 的内存分配