x64 进程可以在 4GB RAM 上占用多少内存
How much memory can x64 process can take on 4GB RAM
我有一个x64应用程序。这是一个有点繁重的应用程序(在线程计数、所需内存等方面)。我在 4GB RAM 64 位 Windows7 四核机器上运行此应用程序。但我注意到的是,在我的应用程序占用大约 2.2-2.3 GB RAM 后,它会崩溃。这是行为所必需的吗?64 位应用程序最多只能从 2.3GB RAM 中占用 2.3-2.4 GB RAM 吗?
否,请先检查您是否没有任何溢出或其他错误。即使是 32 位应用程序也可以解决 - 使用更多的 RAM,所以如果它在 Windows 64 位上受到限制,那将是荒谬的。
剩余的内存可供免费使用,对吧?
RAM 的数量无关紧要,一个进程分配虚拟内存。 您可以在 64 位进程中分配的虚拟内存量仅受操作系统提供页面以将虚拟内存映射到 RAM 的能力的限制。 这通常仅受允许的最大分页文件的限制,假设您没有使用 CreateFileMapping() 创建自己的映射。 这是一个系统设置,控制面板+系统+高级。 Windows版也有一个上限,Windows 7 Home Premium为16 GB,专业版及以上版本为192 GB。
仅当程序实际访问虚拟内存时才使用 RAM。 当内存尚未映射时,这将生成页面错误。 如果在使用所有可用页面之前分配和使用内存远远超出 RAM 量,则 64 位进程通常会由于这些页面错误而减慢到爬网速度。
由于您距离典型的最大分页文件大小相当南,因此这肯定只是另一个普通的旧堆损坏错误。
调试程序。崩溃不应该仅仅因为您分配了大量内存而发生。通常的嫌疑人:数学溢出、内存损坏、无法处理内存分配例程的错误。
相关文章:
- 必须为 C++20 协程帧保留多少内存?
- 堆栈上的参考用途有多少内存
- 指针数组中将有多少内存分配
- 一个 Excel XLL 插件可以有多少内存?
- 在C 中存储对对象的引用需要多少内存
- 对象指针如何知道要删除多少内存
- 使用犰狳线性代数包存储矩阵需要多少内存
- std::vector-他将分配多少内存(在重新分配期间)
- 一个C++指针使用多少内存
- x64 进程可以在 4GB RAM 上占用多少内存
- 计算出一个程序(规划中)需要多少内存
- C/C++ 程序正在使用多少内存
- 哪些数据结构正在使用多少内存
- 表示一个地址需要多少内存
- 了解我有多少内存可用于一个动态向量c++
- 我怎么能看到我的程序消耗了多少内存
- 在x64中,我们可以通过malloc()获得多少内存
- 是否有一种方法可以测量特定函数从堆栈中消耗了多少内存?
- 在c++中,枚举数据类型消耗多少内存
- 对象消耗了多少内存