每个进程的对象是否有最大限制?

时间:2013-07-29 12:41:42

标签: process c++

在C ++中,map类很舒服。我想将所有行存储为对象而不是单独的数据库,而是想为要搜索的列创建map对象。我关注进程可以处理的最大对象。并且正在使用map函数来检索一个对象,例如1000万个对象,如果linux允许,是一个不错的选择?我并不担心持久化数据。

4 个答案:

答案 0 :(得分:4)

您要找的是std::map::max_size,引自参考文献:

  

...反映了容器大小的理论限制。在运行时,容器的大小可以被限制为小于max_size()的值可用的RAM量。

答案 1 :(得分:3)

正如您在参考文档中看到的那样,常量map::max_size会让您知道这些数字。

在iX86硬件/操作系统上应为2 ^ 31-1,在amd64硬件/ 64位操作系统上为2 ^ 64-1

可能的附加信息here

答案 2 :(得分:3)

不,每个进程没有最大对象数。对象(如C ++对象)是操作系统不知道的抽象。在这方面唯一有意义的限制是使用的内存量。

我保证尽可能多地使用map来填充你的RAM。

答案 3 :(得分:1)

对象是编程语言中的一个概念。实际上,进程并不知道对象。有足够的RAM空间,您可以在程序中分配尽可能多的对象。 关于第二个问题,我的答案是您在程序中选择的数据结构取决于您要在程序中解决的问题。 Map是一种适合快速访问对象,测试存在等的数据结构,但不足以维护对象的顺序。