首页 新闻 会员 周边

总物理内存为16g。c#如何缓存8g的文件到内存中?memorystream?

0
悬赏园豆:10 [已解决问题] 解决于 2014-09-15 07:38

有一个大文件,大小不变动。是16位md5的集合。想用memorystream把它缓存到内存中。但发现有时候1g多或到2g的时候就内存溢出了。拿不到内存。我看mongodb sql server 都能占用到10多g内存以上。但c#咋做?

gnhao的主页 gnhao | 初学一级 | 园豆:9
提问于:2014-02-28 11:40
< >
分享
最佳答案
0

Win32的限制,每个进程默认分配最大内存为2G。文件超过2G,线程内存溢出,可能导致IO错误。

 http://msdn.microsoft.com/zh-cn/library/ms189334.aspx

不知道是不是这个原因

收获园豆:10
开山怪不怪 | 小虾三级 |园豆:544 | 2014-02-28 11:42

16g内存。偶用的64位系统。

gnhao | 园豆:9 (初学一级) | 2014-02-28 11:48

@gnhao: 那就不明了,64位应该也有每个进程最大内存限制 ,就是没找到

开山怪不怪 | 园豆:544 (小虾三级) | 2014-02-28 12:02

@黑峰: 貌似2G指的是线程空间,而非进程最大空间。

空明流光 | 园豆:106 (初学一级) | 2014-02-28 12:15

@沧海一杰: 对于 Microsoft Windows 操作系统,应用程序可以访问 2 GB 的进程地址空间,称为用户模式虚拟地址空间   http://msdn.microsoft.com/zh-cn/library/ms189334.aspx  这说的是进程  , 线程就不知道了

开山怪不怪 | 园豆:544 (小虾三级) | 2014-02-28 12:42
其他回答(5)
0

用 64 位程序以及 64 位的 API。

Launcher | 园豆:45045 (高人七级) | 2014-02-28 11:50

就是64位系统。16g内存啊

支持(0) 反对(0) gnhao | 园豆:9 (初学一级) | 2014-02-28 11:57

@gnhao: 我说的是“64 位程序”,你说的是“64位系统”,请问你说的“系统”和我说的“程序”是同一个概念吗?

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊~!!!!!!!!!!!

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-02-28 13:05

@Launcher:哈哈。明白了。64位api是什么意思?

支持(0) 反对(0) gnhao | 园豆:9 (初学一级) | 2014-02-28 13:44
0

这个有意思,关注下解决方案

水晶途途 | 园豆:1443 (小虾三级) | 2014-02-28 13:54
0

有意思,同关注

李信华 | 园豆:202 (菜鸟二级) | 2014-02-28 17:44
0

我想首先你要是用64bit操作系统,第二,你在编译的时候选择编译选项为x64,编译成64位程序。

ocean | 园豆:824 (小虾三级) | 2014-03-07 11:10
0

后来怎么解决的?我也遇到这个问题了。。。

chester·chen | 园豆:507 (小虾三级) | 2020-05-14 15:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册