对于《都市运输2》跳出问题,原因有很多,很多玩家们也不清楚该用什么方法解决最有效,最简单,下面就跳出问题,总结下原因分析和解决方法。
看看弹出统计,什么最弹?
可以看出,弹出的主要是win7 32位系统。为什么会这样呢?个人估计是跟32位 和 64位系统的区别有关。具体说就是32位 程序运行的区别。
从微软的一个页面上虚拟地址空间 可以知道,32位系统中 用户模式进程虚拟地址空间 通常为 2 GB。 就是程序可以自己使用的空间只有2GB。
另一个介绍
64位WINDOWS系统环境下应用软件开发的兼容性问题
中提及: 在32位系统中,默认情况下,应用程序可以使用2G内存,另外2G是系统使用的,通过修改配置,应用程序能使用3G内存,这时系统使用1G内存。在WOW64环境下,一个32位应用程序能使用最多全部的32位地址空间:4G !只需要在编译程序的时候,设置IMAGE_FILE_LARGE_ADDRESS_AWARE标志(/LARGEADDRESSAWARE开关),如果不打开这个开关,就和原来一样,只能使用2G内存。
由于这个游戏是今年(2013)年出的,而且可以在32位系统上运行,应该是32位程序,但是由于它需要许多的内存,64位并无问题,所以应该是打开了那个开关(编译程序的时候)。
关于这个问题,我在 adobe的网站上找到一个网页说明如何打开这2G的限制:
Enabling 3GB switch on Windows Vista™, Windows 7 or Windows XP
在3dm 的另一个页面上也有类似的解决方法:
各种跳出的可以试试这个方法(实测有效)
一样的方法,结合起来,打开2G的限制的方法是:(确保你有4G内存,否则会出错)
1: 开始------搜索框中输入 “ cmd ” ,不要回车
2: 在出现的 “ cmd.exe ” 上右击,选择 “以管理员身份运行”
3: 出现的提示中,确定运行cmd
4: 在命令提示符 (cmd) 中,输入 "bcdedit /set IncreaseUserVa 3072" 之后应该要回车
5: 重启电脑
如果想要恢复到原来的设置,只要在第4步中把输入的内容改为 "bcdedit /deletevalue IncreaseUserVa" 就行了,同样要重启电脑
这只是我的自己的想法。 另外,我看的另外一些资料中提及,并不是所有程序都可以完美运行在这种模式下,有些驱动可能出现问题,而且系统可能运行会变慢。所以我并未尝试,只是提出一个思
这里的扩内存和 32 位系统的超过4G内存限制的扩内存并不同。这里是32位应用程序的。因为需要将一些设备的地址映射到内存中,32位系统并不能真正使用4G内存,而在64位系统中,使用的是内存重映射技术,所以可以完整使用。我并不认同32位系统的扩内存,这其实没什么意义,远不如真正的64位系统。
如果有同学想要尝试,希望能够予以反馈。
那个数字 3072, 正好是 1024 * 3, 也就是3G , 因为这样做是为了将用户空间扩增到 3G,所以理论上 2048 ~ 3072 之间的数字也可以(我自己的猜测,应该不能超过3072)
在那个调查中,楼主的win7 64位也弹出, 估计是由于内存太小的原因。只有2G的内存,64位系统的优势发挥不出。根本原因还是这个游戏对于内存的要求太高,估计超出了2G的内存上限,所以32位系统遇到了问题。至于某些大内存64位 win7 也弹, 估计是程序的内存管理有问题导致的。
所以,32位想要解决问题,只能期待官方解决内存需求过高的BUG。这才是根本解决之道,这里的内容只是在官方的修正还未出之前,一个暂时的应急之策。
如果这个游戏在运行时真的需要超过2G内存,那么它根本不应该运行在32位系统上,而只能支持64位。
其他一些相关资料,有兴趣的同学可以看看:
32位,64位和内存的那点事 ---果壳的文章
32位模式下C/C++程序可用最大内存 --提及,32位系统单进程最大可用内存为3GB,即3072MB(扩增后)
Windows进程的用户空间 --- 关于用户空间,即程序可用内存空间
选32位还是64位的JVM好呢?----- 提到,实际上Windows可供使用的堆空间只有1.5-1.8G,小于本文提到的2G
BCDEdit 命令行选项 -------- 微软的文章,用到的命令行操作的介绍,“在项选项操作的 BCDEdit 命令行选项”就是用到的
如果这样还不能解决问题,那就是游戏自身的bug,只能等待官方的修正补丁。
更新: 刚刚按照此方法对系统做了更改,进入游戏后全速运行2星期,暂未出现任何跳出情况,保存也没有问题。系统暂未发现异常。