windows 32位系统中进程最大可用内存空间为3GB (转)

http://msdn.microsoft.com/zh-cn/library/ms189334.aspx

进程地址空间

所有 32 位应用程序都有 4 GB 的进程地址空间(32 位地址最多可以映射 4 GB 的内存)。对于 Microsoft Windows 操作系统,应用程序可以访问 2 GB 的进程地址空间,称为用户模式虚拟地址空间。应用程序拥有的所有线程都共享同一个用户模式虚拟地址空间。其余 2 GB 为操作系统保留(也称为内核模式地址空间)。所有操作系统版本(从 Windows 2000 Server 开始,包括 Windows Server 2003)都有一个 boot.ini 开关,可以为应用程序提供访问 3 GB 的进程地址空间的权限,从而将内核模式地址空间限定为 1 GB。

下一版本的 Microsoft SQL Server 将删除该功能。请不要在新的开发工作中使用该功能,并尽快修改当前还在使用该功能的应用程序。

地址窗口化扩展插件 (AWE) 通过允许访问尽可能多的操作系统支持物理内存来扩展 32 位应用程序的功能。AWE 可以将最大内存容量 64 GB 的一部分映射到用户地址空间来实现此功能。应用程序缓冲池和 AWE 映射内存之间的映射通过操作 Windows 虚拟内存表来完成。

为了支持 3 GB 的用户模式进程空间,必须将 /3gb 参数添加到 boot.ini 文件中并重新启动计算机,从而使 /3gb 参数生效。设置此参数后,用户应用程序线程可以寻址 3 GB 的进程地址空间,而为操作系统保留 1 GB 的进程地址空间。

注意

如果计算机上有 16 GB 以上的可用物理内存,操作系统需要 2 GB 的进程地址空间供系统使用,因此只能支持 2 GB 的用户模式地址空间。为了让 AWE 能够使用 16 GB 以上的内存,应确保 boot.ini 文件中没有 /3gb 参数。否则,操作系统就不能寻址 16 GB 以上的内存。

请参阅

概念

内存体系结构

使用 AWE

时间: 2024-07-30 07:33:22

windows 32位系统中进程最大可用内存空间为3GB (转)的相关文章

4GB的内存条在32位系统中只能显示为3GB左右的原因(转)

原帖地址:http://bbs.51cto.com/viewthread.php?tid=875012&extra=&page=1 1. 4GB的内存条在32位系统中只能显示为3GB左右的原因 第一个原因只会“吃掉”您一小部分的内存 众所周知,电脑中二进制中的换算关系是 1GB=1024MB,实际生产时,硬件厂商厂商的换算单位是1GB=1000MB,当电脑厂商告诉您,您电脑中的内存是1GB的时候,其实您的内存是1000MB,系统识别时,用1000处以1024,也就显示您的内存是0.976G

PHP长整型在32位系统中强制转化溢出

CleverCode近期遇到一个PHP项目整形转化问题,mysql有一个字段id是bigint的,里面有长整型,如id = 5147486396.可是php代码因为历史原因却部署在多台机器中,当中A机器32位系统中,B机器64系统中.如今的问题是64系统中页面訪问正常.32位系统中訪问出错了.原因是php整形溢出. 1 A机器演示 1.1 获取A机器系统位数 # getconf LONG_BIT 1.2 整形转化代码 <? php $id = 5147486396; echo '$id:'.$i

Visual Studio2015 (VS2015)简体中文版 安装教程(在Win 8.1 32位系统中)

VS2015简体中文版安装 导航 介绍 解决安装先决条件 安装 VS2015 创建桌面快捷方式 启动 VS2015 命令启动VS2015 配置 VS2015 启动完成 MSDN安装 启动MSDN Visual Studio的功能添加和删除 Visual Studio的卸载 补一张安装完成的 介绍    返回顶部 由于安装在不同的操作系统中会遇到不同错误的提示 所以,不会在本篇文章中介绍 Visual Studio2015 在不同操作系统的安装方法. 如果在安装过程中遇到了问题 请在百度中搜索相关

为什么一个指针在32位系统中占4个字节,在64位系统中占8个字节?

一个指针在64位的计算机上,占8个字节:一个指针在32位的计算机上,占4个字节. 原因如下: 我们都知道cpu是无法直接在硬盘上读取数据的,而是通过内存读取.cpu通过地址总线.数据总线.控制总线三条线对内存中的数据进行传输和操作. 具体流程: 1.cpu通过地址总线,找到该条数据: 2.通过控制总线得知该操作是读操作还是写操作: 3.通过数据总线将该数据读取到cpu或者从cpu写到内存中. 所以, 地址总线的宽度决定了CPU的寻址能力: 数据总线的宽度决定了CPU单次数据传输的传送量,也就是数

C++获取Windows7 32位系统中所有进程名(类似于任务管理器中的进程)

代码是网上查找资料,然后自己调试,修改之后可以运行. 系统:win7 32位,VS2008 -----------------------------------------------------------------------代码------------------------------------------------------------------------------------ 1 #include <iostream> 2 #include <string&g

在32位系统中,int类型的最大值是多少?

首先分析一个问题:int类型一般情况下是否等于signed int类型,目前所知道的编译器一般是这样子的.那再问:为甚答案是2的31次方,减去1,原来符号整型的最大值是31个1,意味着是2^0+2^1+2^1+........+2^30,所以答案就是这个. 延伸出一个问题:如何得知windows的操作系统类型,打开控制面板,就可以看到操作系统类型,显示的是32位操作系统,在这里可以知道一个指针,是4个字节长度.曾经遇到float和double之间的区别,在实际的项目中,从来没有使用到float或

针对Windows 64位系统中Matlab没有LED Control Activex控件的解决方法

Win 10 64bits系统中Matlab 64位软件没有LED Control Activex控件,LED ActiveX Control控件位于Gauges Blockset模块中,而Gauges Blockset模块只能安装在Matlab 32-bit的版本中(并不是一定需要安装在window 32-bit,本人测试环境为win10 64bit),在win10 64-bit环境下安装时默认安装的是Matlab 64-bit,所以不会安装Gauges Blockset模块,当然就不会有Ac

32位系统装4G以上的内存

1.操作系统在32位平台上最大寻址空间是4GB,如果要使用4GB以上的内存,就必须使用intel的PAE(物理地址扩展)模式,在windows NT平台实现PAE只需对boot.ini加上/pae即可,而对于RHEL5,缺省安装模式下是不允许检测超过4GB内存,所以需要在内核安装完毕后在安装kenel-PAE套件. 2.X86平台的硬件支持两级页表,Intel Perium pro以上均支持PAE和三级页表,使得系统最大寻址达到36位,就是64GB内.但是系统进程运行时使用的永远是虚拟地址,在3

释放Ubuntu/Linux系统cache,增加可用内存空间

某台式机Ubuntu内存共3G,但free的内存只有200M,无法满足scala的jvm需求. 注意用top命令查看才能看到真正的free内存.下面是查看真正内存使用量的另一种命令. watch -n 1 cat /proc/meminfo 搜索发现有三种方法都可以达到释放内存的目的: watch -n 1 free -m or: free -m 上述这种方法只增加了几十M. sudo sysctl -w vm.drop_caches=3 上述这种方法,目的是释放kernel用在cache上面的