C ++减少4096字节的内存页面大小

时间:2010-12-12 18:01:42

标签: c++ boost 64-bit debian

现在在我的系统(debianx64)上,页面大小为4096字节。减少它有可能吗?我想在内存中存储许多小块但是即使保留1个字节我也不能使用另一个4095,因为这里添加了第一条消息中的东西。 这是真的还是我错了? 有可能吗? 答复的答案。

3 个答案:

答案 0 :(得分:10)

没有

4096是x86平台提供的最小页面大小。这是CPU施加的限制。它提供更大的尺寸(最多4MB,具体取决于模式),但通常由操作系统在启动时选择。

所能做的是将相对较大的分配作为object pool的后备存储。然后,如果您需要许多小对象,它们都可以存储在单个页面或内存区域中。这是提高内存分配性能的常用习惯。

此外,大多数理智的内存分配器无论如何都以这种方式工作,因此除非您在分析中发现需要它,否则不必实现对象池。

答案 1 :(得分:1)

页面大小是一个操作系统范围的项目。您不能仅为应用程序创建新的页面大小,因为页面错误逻辑必须与所有其他进程一起使用。

我不确定你到底想要做什么。我会说,如果您甚至担心这个问题,那么您需要通过连续存储和访问内存来使您的软件更加缓存,就像在数组中一样。

答案 2 :(得分:1)

页面大小(在x86平台上BTW不能低于4K)很可能与您的情况无关。如果在堆上分配数据,页面大小的问题将不会以您假设的方式出现。