有一个大文件,大小不变动。是16位md5的集合。想用memorystream把它缓存到内存中。但发现有时候1g多或到2g的时候就内存溢出了。拿不到内存。我看mongodb sql server 都能占用到10多g内存以上。但c#咋做?
Win32的限制,每个进程默认分配最大内存为2G。文件超过2G,线程内存溢出,可能导致IO错误。
http://msdn.microsoft.com/zh-cn/library/ms189334.aspx
不知道是不是这个原因
16g内存。偶用的64位系统。
@gnhao: 那就不明了,64位应该也有每个进程最大内存限制 ,就是没找到
@黑峰: 貌似2G指的是线程空间,而非进程最大空间。
@沧海一杰: 对于 Microsoft Windows 操作系统,应用程序可以访问 2 GB 的进程地址空间,称为用户模式虚拟地址空间 http://msdn.microsoft.com/zh-cn/library/ms189334.aspx 这说的是进程 , 线程就不知道了
用 64 位程序以及 64 位的 API。
就是64位系统。16g内存啊
@gnhao: 我说的是“64 位程序”,你说的是“64位系统”,请问你说的“系统”和我说的“程序”是同一个概念吗?
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊~!!!!!!!!!!!
@Launcher:哈哈。明白了。64位api是什么意思?
这个有意思,关注下解决方案
有意思,同关注
我想首先你要是用64bit操作系统,第二,你在编译的时候选择编译选项为x64,编译成64位程序。
后来怎么解决的?我也遇到这个问题了。。。