我有一个x64应用程序。这是一个有点繁重的应用程序(在线程数,需要的内存等)。我在4GB RAM 64位Windows7 Quad核心机上运行此应用程序。但我注意到的是,在我的应用程序需要大约2.2-2.3 GB Ram后,它会崩溃。这是必要的吗? 64位应用程序最大可以从4GB RAM只占用2.3-2.4 GB RAM吗?
答案 0 :(得分:1)
不,请先检查您是否有任何溢出或其他错误。即使是32位应用程序也可以解决 - 使用更多内存,所以如果它在Windows 64位上受限制将是荒谬的。
剩余的内存可以免费使用,对吗?
答案 1 :(得分:1)
RAM的数量无关紧要,进程分配虚拟内存。您可以在64位进程中分配的虚拟内存量仅受操作系统提供将虚拟内存映射到RAM的页面的限制。这通常仅受最大允许分页文件的限制,假设您没有使用CreateFileMapping()创建自己的映射。它是一个系统设置,控制面板+系统+高级。 Windows版本有一个上限,Windows 7 Home Premium为16 GB,专业版为192 GB。
RAM仅在程序实际访问虚拟内存时使用。当内存尚未映射时,会生成页面错误。如果在使用所有可用页面之前分配和使用的内存远远超出RAM的数量,那么64位进程通常会因为这些页面错误而变慢。
由于您距离典型的最大页面文件大小很远,这肯定只是另一个普通的旧堆损坏错误。
答案 2 :(得分:0)
调试你的程序。不应该仅因为你分配了大量内存而发生崩溃。通常的怀疑:数学溢出,内存损坏,无法处理内存分配例程中的错误。