Solaris 10 发行说明

x86: x86 系统上的应用程序内存分配限制

Solaris 应用程序使用 malloc()brk()mmap() 等函数分配内存。应用程序可分配的最大内存量受用户虚拟地址空间大小的限制。用户虚拟地址空间中包含的程序文本、堆栈、数据和库会进一步减小最大内存分配大小。

32 位计算环境

在 32 位计算环境中,用户与内核共享 32 位虚拟地址空间。因此,用户虚拟地址空间的大小为 4 GB 减去内核虚拟地址空间的大小。内核虚拟地址空间大小的配置取决于物理内存的大小。随着物理内存大小的增加,用户地址空间的大小会减小。对于具有 8 GB 内存的系统,用户地址空间的大小约为 3 GB。

如果内存分配限制对于应用程序不足,则存在两种选择:

64 位计算环境

在 64 位计算环境中,32 位应用程序的虚拟地址空间完全用于用户。所以,32 位应用程序可分配的内存为全部 4 GB 减去文本、堆栈和库所需的用户地址空间。

在某些早期 64 位 AMD 处理器上,可以进一步将内存分配限制减少 1 GB。要确定您的处理器是否受影响,请执行以下步骤:

  1. 从任何 32 位 shell 运行命令 pmap $$

  2. 在处理器图上,检查是否已列出大于或等于 0xC0000000 的地址。如果这些地址不存在,则 Solaris OS 已将 32 位应用程序限制为最少为 4 GB 虚拟地址范围的 3 GB。

取决于应用程序已在使用的内存,64 位应用程序可分配 250 TB 内存。