除了 4GB 的内存大小限制之外,在 64 位操作系统上运行 32 位应用程序的惩罚是什么?例如。32 位应用程序是否要求在前 4 GB 内分配其地址空间,或者操作系统和处理器是否将其从应用程序中抽象出来?
在软件社区中,对 64 位应用程序的推动很大,我并不总是预见到需要如此大量内存的应用程序(例如,Firefox),所以我只是对运行的好处和陷阱感到好奇64 位平台上的 32 位应用程序。
除了 4GB 的内存大小限制之外,在 64 位操作系统上运行 32 位应用程序的惩罚是什么?例如。32 位应用程序是否要求在前 4 GB 内分配其地址空间,或者操作系统和处理器是否将其从应用程序中抽象出来?
在软件社区中,对 64 位应用程序的推动很大,我并不总是预见到需要如此大量内存的应用程序(例如,Firefox),所以我只是对运行的好处和陷阱感到好奇64 位平台上的 32 位应用程序。
谷歌搜索“russinovich push limits”,您会发现一系列由 sysinternals Windows 工具套件的作者撰写的关于 Windows 内存使用各个方面的文章。
我不确定在 64 位操作系统上运行 32 位应用程序是否真的有很多明显的缺点。在 64 上运行 64 的最大好处是内存寻址,而且……这是一个很大的好处。
即使是最新版本的 OS X 默认为 32 位(您在启动时点击 6 和 4 以启动 64 位内核,但我记得您不会让所有内核扩展正常工作)。OS X 长期以来一直是一个“混合”操作系统。
我听说影响使用 64 位操作系统的人的唯一缺点是驱动程序(一些 32 位驱动程序无法正常工作)以及如果处理器不支持 64 位操作系统而不喜欢 64 位操作系统的旧机器,而且还有很多旧机器那里的机器。
开发人员需要确保它正常工作,因为需要考虑到一些需要挂钩到 64 位操作系统的事情。但是,许多应用程序在 64 位操作系统上运行良好。
作为一般原则,如果您的服务器的内存为 4GB 或更大,则使用 64 位是要走的路。微软甚至推荐 IIS 运行 64 位操作系统和 32 位应用程序池(或 IIS 作为一个整体在 WS03 上以 32 位模式运行)。
64 位应用程序有更多的内存开销,这是阻止完全迁移到 64 位的主要因素之一。此外,某些应用程序在 64 位上的性能也不尽如人意。例如,ASP.NET 在 Web 服务器上的 32 位应用程序池中表现更好。
至于它可以使用的内存的任何限制,这不是问题。64 位操作系统打破了这些界限,32 位应用程序从中受益。
如果您的应用程序永远不会使用超过 4GB 的内存,那么拥有 64 位版本并没有真正的优势。也就是说,大多数拥有 64 位操作系统的人都想要 64 位版本的一切……即使他们不需要它。
操作系统抽象出内存的来源,它不需要是物理上的第一个 4Gbs。
在 64 位操作系统上运行 32 位应用程序的另一个缺点是应用程序现在需要加载一堆 32 位 dll,并增加计算机上的内存使用量。
dll - 至少是代码部分 - 在大多数情况下在使用该 dll 的所有应用程序之间共享。您正在运行的 64 位应用程序以及 Windows 组件本身将加载和共享标准的 64 位 dll。当您启动第一个 32 位应用程序时,它需要加载这些 dll 的 32 位版本。