回 帖 发 新 帖 刷新版面

主题:请教mtlx:64位系统下 如何开辟大于2G内存

IMPLICIT REAL*8 (A-H,O-Z)
      PARAMETER(MEMSIZE=240000000)
      COMMON A(MEMSIZE)

平台:vs2008 + intel fortran 11

在32位下,上述开内存无问题,如果MEMSIZE=250000000,即超出系统内存大小
在64位下,如果MEMSIZE=250000000,也超出系统内存大小。
请教下mtlx老师,如何才能开辟更大的内存空间,采用64位系统

回复列表 (共23个回复)

21 楼

[quote][quote]貌似大家用的都是IVF,不知道对CVF恕不熟悉

我现在的程序也需要用大量的数组,采用动态数组时只能开到2G,就是程序前半段占到1.8G、1.9G时都没问题,但是如果继续运行,遇到给新的数组分配地址,超过2G时就会报错,说virtual memory 不足之类的,但是我机子的内存有4G啊,而且在算规模较小的问题时可以完整通过没有问题的

是不是跟单条内存的大小还有关系啊,或是有别的什么问题?

希望对CVF熟悉的大侠发表高见...[/quote]
32位的xp系统,单个程序最多调用2G的内存
要么换64位的系统或者Windows 2003和2008的32位版[/quote]突然翻到这里想起几个参数,如果还是用着XP32位的兄弟可以在BOOT.INI的启动参数后加几项参数,加完后可用内存就会大了:)
/PAE /3GB
这里解释一下这两个参数吧:
/PAE:此参数需要用户程序特殊支持。该参数将启用AWE技术来访问的支持,也就是说虽然是32位系统,但你已经可以访问大于4GB的空间了。原因也很简单,因为32位程序对于非分页的内存空间可以达到2的64次方(够用了吧)。

/3GB:这个是为了解决在默认情况下,操作系统占用了2GB的空间,使得应用程序无法使用常规模式(非AWE模式)使用超过2GB空间的这么一个参数。
该参数使用后,系统内存空间缩为了1GB,用户空间则扩展到了3GB。这样就算不用AWE技术的特殊API,你也能使用3GB的空间了:)

但是需要非常注意的一点是:当你的内存大于16GB时,1GB的系统空间已经无法再进行内存管理了。这时你需要做的是打开/PAE,去掉/3GB:)

备忘一下下:)

22 楼

LS这种方法很多人提到过,但是成功的人也很少,估计和每个人的系统情况有关(正版?补丁?)

23 楼

除了用SQL SERVER外,其他的貌似没有用AWE技术的程序了。而3GB我用了确实管用:)
但一定不能是home版本:)

我来回复

您尚未登录,请登录后再回复。点此登录或注册