我知道这个问题已被多次询问过.我环顾四周,但似乎无法找到答案.
我确实找到了这段代码如何在C++中获取Windows下的内存使用情况.但它不会编译,我见过的所有其他答案都是关于如何获得单个进程cpu/ram的用法.
我有一个由Visual Studio 2010运行的C++程序,如何监视程序的内存使用情况?是否存在简单的API,例如我可以调用clock_t start1和start1 = clock();监视程序的时间使用情况.谢谢:)
好的,所以我有一个非常大的多线程非托管c ++应用程序(服务器),它运行在Windows 2003服务器上.它为20-50个并发用户提供各种业务逻辑的会话...有时,由于用户在客户端打开了大量窗口等对象/会话缓存之类的东西,它可能会占用大量内存(每个窗口都有一个单独的服务器'会话'.
我们经常看到消耗超过5-600 MB的物理内存和5-600 MB的虚拟内存.一旦达到这一点,我们似乎开始出现"内存不足"错误.
现在我知道Windows会在感觉需要释放物理内存时启动页面错误,而且win32应用程序通常只能分配最多4GB的内存,实际上只有2GB可用于应用程序实际使用'用户模式'地址空间,甚至更少的其他库加载后......我不确定'用户模式'内存使用情况是否是任务管理器上报告的内容. ..
所以无论如何我真正的问题是:
我如何知道我的应用程序可以访问多少用户模式内存,以及在任何给定时间(最好是从应用程序外部,即某些Windows管理工具)使用了多少内存?
[edit]在查看Process Explorer和网站之后,看起来值'Virtual Size'是应用程序可以访问多少内存的值.