繁体   English   中英

在FreeBSD下允许32位应用程序使用超过4GB的内存

[英]Allow 32-bit application use more than 4GB of ram under FreeBSD

我目前正在FreeBSD下开发一款游戏。 我正在使用clang将其编译为32位二进制文​​件,并在64位系统(在该系统下具有32GB RAM)下运行它,但是我需要使用它来使用4GB以上的RAM,因为它仅使用4GB。
即使我运行游戏的多个实例,它也不能访问超过4GB的RAM。

另外,我尝试在64位系统上进行编译,但是它具有奇怪的行为。 我有很多错误。

我知道Windows上的Visual Studio有一个/LARGEADDRESSAWARE选项,或者类似的选项,它使32位应用程序能够使用更多的RAM,或者我错了吗?
我可以指定任何标志(例如Windows)来使我的二进制文件能够使用更多的RAM吗? 我已经读过一些有关mcmodel=large (或medium )的信息,但是我不确定这是我要找的东西。
交叉编译如何? 有谁知道我在哪里可以找到一些好的信息?
谢谢。

您只能使用32位整数寻址4GiB。 2 ^ 32 = 4294967296 = 4 * 1024 * 1024 * 1024

在32位可执行文件中,没有超过4GiB的地址空间。 那是数学上的限制。 诚然,您可以使用交换和物理地址扩展来处理一个进程中超过4GiB的数据,但是在任何给定时间,您不能寻址超过4GiB的数据。

要使用超过4GB的RAM,您需要64位版本的FreeBSD。 这基本上意味着“ amd64”而不是“ i386”体系结构。 您可以在64位系统下运行32位二进制文​​件,这将使多个实例使用超过4GB的RAM。 显然,一个人将无法解决更多的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM