如何计算我的进程在Windows上的可用虚拟地址空间量?
我的应用程序需要限制使用的地址空间量。因此,我需要估计我已经消耗了多少内存,以及还剩下多少虚拟内存。如果我只剩下几百兆字节的地址空间,我的进程就开始使用定制的分页系统,以避免在内存中加载太多数据。
更重要的是:这需要按进程计算,因为我只关心我的进程,我仍然使用Win32。
我已经尝试过VirtualQuery(),但它没有返回剩余的总地址空间。
谢谢。
发布于 2009-07-13 14:18:09
您可能需要查看GetProcessMemoryInfo或GetProcessWorkingSetSizeEx,以确定您正在使用多少内存。
发布于 2010-09-25 00:56:34
使用Win32接口中的GlobalMemoryStatusEx函数。您感兴趣的字段是ullAvailVirtual,它是您的进程尚未保留或提交的虚拟空间的字节数。
发布于 2009-07-13 14:24:48
如果你使用的是c++,你可以使用定制的内存分配器。但是,您可能不需要跟踪每个内存分配,只需要跟踪程序的大部分内存密集型部分。
一种选择是在启动时分配内存块,并使用LRU缓存重用分配的内存块,只在内存中保留最近使用的数据。您的程序也将更快(在运行时不需要分配),并且您将防止由于分配/释放内存而导致的内存碎片。
https://stackoverflow.com/questions/1119669
复制相似问题