您的位置:游戏资料社 >> 龙之谷

一个能够解决OUTOFMEMORY的办法

来源:游戏资料社  游戏:龙之谷

上周六是蛋痛的一天。。放假回家兴冲冲的准备刷天启。结果这个该死的OUTOFMEMORY让我整个人都OUT了

无数次雷兽完了OUT无数次天启进图OUT

而且很悲剧的是OUT的时候我还有1GB的空闲内存。

4GB的内存居然无法满足龙之谷。。

虽然32位系统理论上只支持3GB的内存

为了解决这个问题百度了N多方法

无非就是设置撒子虚拟内存,关闭预读等等无道理无原理的方法

在我绝望得想装双系统换成XP的时候我发现这个神贴。

从此我不在OUT~~~



outofmemory的意思是内存不足。

作为一个有着些年头WIN32C++开发经验的程序员我不同意WIN7的预读等等说法,因为我不认为系统的预读会占用用户地址空间,起码来说,预读功能是单独的系统服务,独立的进程。而系统的内存不足的话,windows肯定会有提示,不知道大家有没有遇到过,右下角出现一个*的小三角提示虚拟内存太小。

曾怀疑过是DN程序内存泄漏或者没有考虑到内存空间导致申请的内存超出2GB,而导致此问题,但是每次出此BUG时我去观察内存占用情况却发现一般都保持在1.5G。所以一开始排除了这种可能,不过今天忽然想到一点,就是内存映射文件,而DN的资源包最大恰好是0.5G。因此极其有可能是这个原因。(内存映射方式打开文件虽然不会将整个文件加载到内存,但是会占用与文件大小相等的地址空间,而win32系统进程的最大地址空间是4GB其中默认用户地址空间是2GB,也就是说做为程序员一个进程最多也就2GB的地址空间而出现内存不足提示的时候DN进程的内存使用是1.5G加上0.5G的资源包地址空间大概已经达到2GB因此当再申请内存的时候就会失败。)

说这些估计很难有人理解,那么说一下解决方案吧,(我没DN的源码没办法去修改他内部的BUG所以只能从其他地方想办法了)以下是重点。

修改WINDOWS启动配置,让进程用户地址空间达到3GB

windows7系统:

1.进入命令行:点击开始菜单->在搜索框中输入"cmd",按下ctrl+shift+回车(命令行的*员模式)

2.输入命令:bcdedit/setincreaseuserva3072回车

3.重启系统.

xp系统:

1.去掉引导文件只读等属性:开始->运行输入"attribc:\boot.ini-h-r-s"回车

2.编辑引导文件:开始->运行输入"c:\boot.ini"回车,在类似“multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="MicrosoftWindowsXPProfessional"/noexecute=optin/fastdetect”这一行最后加上“/3GB”保存。

3.恢复引导文件只读等属性:开始->运行输入"attribc:\boot.ini+h+r+s"回车

4.重启系统.

(感谢永远の不死提醒XP系统编辑引导文件可以直接我的电脑->属性->高级->启动和故障恢复设置->编辑弄完别忘保存)

>>如果你有疑问或者有不同的看法,欢迎点击进入论坛原帖讨论交流<<
 也欢迎你来投稿:http://bbs.766.com/forum-2206-1.html