我有一台2 GB的机器.在运行我的exe之前,我有1.1 GB的可用内存.当我运行下面只能找到一行的exe时,我就会出现内存异常.
我期待以下行使用大约6亿字节的内容.MemoryStream类使用的内存多于初始化容量吗?
MemoryStream memory = new MemoryStream(600000000);
Run Code Online (Sandbox Code Playgroud) 我用10 M行数据进行了测试.每行有3个整数和2个字符串列.首先,我将此数据导入mongoDB,这是一个单独的分片.我在非索引列上使用db.table.find()进行简单的"where"查询.查询获取单行,大约需要7秒.
在相同的硬件上,我将相同的数据加载到内存中的ac#list.我做了一个while循环来扫描所有10M数据并做一个简单的相等控制来模拟查询的位置.它只需要大约650毫秒,比MongoDB快得多.
我有一个32 GB的机器,所以mongodb没有问题的内存映射表.
为什么mongoDB要慢得多?是因为mongoDB将数据保存在难以完全扫描的数据结构中,还是因为内存映射与将数据保存在变量中的方式不同.