【发布时间】:2010-12-24 19:20:11
【问题描述】:
我正在编写一个性能关键型应用程序,其中必须在转储到磁盘之前在物理内存中存储尽可能多的数据。
我可以使用::GlobalMemoryStatusEx(...) 和::GetProcessMemoryInfo(...) 找出保留\空闲的物理内存百分比以及我当前进程处理的内存量。
使用这些数据,我可以确保在使用约 90% 的物理内存或达到每个应用程序限制的最大 2GB 的约 90 时进行转储。
但是,我想要一种方法来简单地接收在系统开始使用虚拟内存之前实际剩余的字节数,特别是因为应用程序将同时编译为 32 位和 64 位,而 2 GB 限制不存在。
【问题讨论】:
-
您是否使用动态对象分配并检查您正在使用多少内存?通常,人们将他们的对象预先分配到特定大小,从而节省所有检查开销。
-
这不是意味着您正在尝试编写自己的虚拟内存管理器吗?还是您再也不会访问转储的数据?
-
这不是虚拟内存。虚拟内存将程序使用的内存地址与物理内存地址分开。
-
你不能,如果你能得到任何答案,你得到的答案将立即过时。
-
Erm 我知道大多数“类似网络”的程序员永远不会理解这一点,但是有些应用程序可以从稳定的连续内存空间(如 DOS)中受益而无需交换。问题是 - 使用 Windows VM 是否可以远程执行类似的操作?
标签: c++ windows winapi memory swap