关于这个问题,我再补充下。首先:32bit的寻址空间就是4G,一般情况下,windowsxp能识别 4g,使用3.5G,linux可以识别4G,但是系统识别到这么多,并不是都可以使用这么多,例如:你有个windows2003的,8G内存(2003识别内存的多少,是和操作系统版本有关的,professional记得上限4G),如果安装oracle,ora...
显示全部关于这个问题,我再补充下。
首先:
32bit的寻址空间就是4G,一般情况下,windowsxp能识别 4g,使用3.5G,linux可以识别4G,但是系统识别到这么多,并不是都可以使用这么多,例如:
你有个windows2003的,8G内存(2003识别内存的多少,是和操作系统版本有关的,professional记得上限4G),如果安装oracle,oracle的sga 只能使用1.7G,java虚拟机也是一个道理,用户并不能使用你看到的全部内存。
举个例子:(这里也是我粘人家的图)
+++++++++++++++ 4g
+ -------------------------+
+------------------------- +
+------------------------- +
+++++++++++++++ 3g: kernel
+ ------------------------- +
+ ------------------------- +
+------------------------- +
+++++++++++++++ 2g: process stack
+ -------------------------+
+------------------------- +
+++++++++++++++ 1.25g: SGA起点
+++++++++++++++ 1g: oracle 共享库装载起点
+ -------------------------+
+ -------------------------+
+ -------------------------+
+++++++++++++++ 0g: oracle program(可执行代码)装载起点
也就是一部分内存空间预留给了核心
那么,如何使用这么大的内存呢?
我还是以windows为例,可以在c盘BOOT.INI文件加上
/PAE 参数,也就是内存扩展(需要cpu来支持),可以突破这个限制。
另外,jvm太大也并不是好事情
[
本帖最后由 月光无寒 于 2009-7-4 00:01 编辑 ]
收起