Oracle Solaris Studio 12.2:C++ 用户指南

2.6.3 虚拟内存的控制

-xO3 或更高级别编译非常大型的例程(一个过程中有数几千行代码)需要大量内存。在这种情况下,系统性能可能降低。您可以通过限制单个进程的可用虚拟内存量来控制这种情况。

要在 sh shell 中限制虚拟内存,请使用 ulimit 命令。有关更多信息,请参见 sh(1) 手册页。

以下示例显示了如何将虚拟内存限制为 4GB:


 example$ ulimit -d 4000000

csh shell 中,可使用 limit 命令限制虚拟内存。有关更多信息,请参见 csh(1) 手册页。

下一个示例也显示了如何将虚拟内存限制为 4GB:


 example% limit datasize 4G

这些示例都会使优化器在数据空间达到 4GB 时尝试恢复。

虚拟空间的限制不能大于系统总的可用交换空间。在实际使用时,虚拟空间的限制要足够的小,以允许在大型编译过程中正常使用系统。

请确保编译不会消耗一半以上的交换空间。

有 8GB 的交换空间时,请使用以下命令:

sh shell 中:


example$ ulimit -d 4000000

csh shell 中:


example% limit datasize 4G

最佳设置取决于要求的优化程度、实际内存量和可用的虚拟内存量。