如题。
是不是最大不能超过4G呢? 我写的一个winForm程序,在运行4-5个小时以后,会莫名其妙的自动消失,会不会是内存已经超过最大使用范围了呢? (输出的32位的程序,在64位的机器上跑,机器的内存是12G。)。

解决方案 »

  1.   

    是3G...不管语言编写的程序都不可能突破操作系统的限制...莫名其妙自动消失?是进程终止?没有异常吗?这个不一定跟内存有关,写log查原因吧...
      

  2.   

    32位程序的指针也是32位。32位的指针最多能寻址到4G(2的32次方)。程序要调用系统功能,所以系统内核也要映射到程序的地址空间去。系统内核部分是系统保留的,默认为2G(除非在启动中特别使用3G选项),用户程序不能使用。扣掉系统保留的2G,32位用户程序最多能寻址到2G。"莫名其妙的自动消失"一般不是内存不够引起的,它往往意味程序已经处于极其错误的状态。盲目的使用try catch是一种常见的引发原因。注:32位用户程序也能用特殊的办法使用超过4G的物理内存,但它在同一时间下只能有2G的地址空间。