所以我需要跨平台的方式,可能是使用boost,或者至少对于windows。那么如何获取应用程序使用多少RAM的信息呢?
答案 0 :(得分:2)
对于Windows,请使用任务管理器;对于Linux,请使用top
。让操作系统告诉你而不是试图在你的应用程序中猜测你会好得多。
答案 1 :(得分:2)
在* NIX上尝试getrusage()
,在Windows上尝试GetProcessMemoryInfo()
。
http://www.opengroup.org/onlinepubs/009695399/functions/getrusage.html
http://msdn.microsoft.com/en-us/library/ms683219%28VS.85%29.aspx
答案 2 :(得分:1)
在使用Visual Studio的Windows上,您可以使用CRT Debug Heap函数。 _CrtMemDumpStatistics
可用于打印有用的统计数据。 _CrtMemDumpAllObjectsSince
列出了检查点之间分配的所有对象。还有更多有用的东西,如内存泄漏检测(_CrtDumpMemoryLeaks
)。也可以使用_CrtMemCheckpoint
拍摄快照,并稍后与_CrtMemDifference
比较差异。
还可以重新定义new
以获取有关CRT调试功能的更详细信息。
#ifdef _DEBUG
#define new new(_CLIENT_BLOCK, __FILE__, __LINE__)
#endif
注意:这仅跟踪CRT分配。要获取整个进程内存信息,可以使用GetProcessMemoryInfo
。
答案 3 :(得分:0)
我个人喜欢使用http://valgrind.org/测试我的应用程序的整体性能,非常有用于内存泄漏检测!如果您正在寻找简单的运行时信息,Linux的TOP命令和Window的任务管理器都非常容易使用。