为啥我的程序在 64 GB RAM 系统上占用的 RAM 不超过 2 GB?
Posted
技术标签:
【中文标题】为啥我的程序在 64 GB RAM 系统上占用的 RAM 不超过 2 GB?【英文标题】:Why my program does not take more than 2 GB RAM on 64 GB RAM System?为什么我的程序在 64 GB RAM 系统上占用的 RAM 不超过 2 GB? 【发布时间】:2016-09-21 16:36:38 【问题描述】:我正在尝试使用 Halen 数据集训练 Dlib's train_shape_predictor_ex.cpp。我在release mode
中使用Visual Studio 将64-bit plateform
的代码编译为console application
。
当我在命令提示符下运行the train_shape_predictor_ex.exe
时,执行的进程开始了,我在Task Manager
中看到该进程的内存消耗正在增加,但它停止到大约1.9 GB 并给出了一个运行时异常:分配错误。即使我的系统是 64 GB RAM
谁能帮我解决这个问题? 提前致谢 !
【问题讨论】:
@FirstStep 你确定吗?我发誓前几天我关闭 Firefox 时,它的内存是 8.3GB(是的,我有 很多 个标签) 您必须已经构建了 32 位应用程序。 也许你的分配实际上很糟糕。我的意思是,如果你尝试分配 50TB 的内存,它会失败。 请使用调试器,检查导致错误的代码行。 “无法获取更多内存”不是如何请求 C++ 编码问题的帮助。见minimal reproducible example。 您是否不小心从您的应用程序中删除了 /LARGEADDRESSAWARE 标志?如果没有该标志,您将仅获得 2GB 的地址空间。 【参考方案1】:要构建比普通 32 位应用程序消耗物理内存的 C++ 应用程序(意味着 2GB),需要在 64 位模式下构建应用程序。
将 /LARGEADDRESSAWARE 标志启用为 true 为 65 位目标 CPU 构建应用程序。【讨论】:
我不知道什么或者应该是“64 位”而不是“65 位”吗?以上是关于为啥我的程序在 64 GB RAM 系统上占用的 RAM 不超过 2 GB?的主要内容,如果未能解决你的问题,请参考以下文章
将系统ram升级到16 GB面临错误:Java运行时环境检测到致命错误: