首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Qt获取内存信息

使用Qt获取内存信息
EN

Stack Overflow用户
提问于 2011-11-14 13:28:44
回答 3查看 25.3K关注 0票数 34

我如何获得这些信息:

当前运行的应用程序使用的

  • 全内存
  • 内存?

我认为Qt应该有与平台无关的内存选项,但我找不到它。那么,当我想要创建一个显示内存状态的独立于平台的应用程序时,我能做什么呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-14 14:32:50

不幸的是,Qt中没有任何内置的内容。你必须按平台做这件事。

这是一些样品,让你开始。就在上周,我不得不在我的一个应用程序中实现了这一点。下面的代码仍在开发中;可能有错误或泄漏,但至少可以指出正确的方向。我只对总物理RAM感兴趣,但其他值也是可用的。(除了当前应用程序正在使用的内存以外.不确定那件事。)

窗口(GlobalMemoryStatusEx)

代码语言:javascript
运行
复制
MEMORYSTATUSEX memory_status;
ZeroMemory(&memory_status, sizeof(MEMORYSTATUSEX));
memory_status.dwLength = sizeof(MEMORYSTATUSEX);
if (GlobalMemoryStatusEx(&memory_status)) {
  system_info.append(
        QString("RAM: %1 MB")
        .arg(memory_status.ullTotalPhys / (1024 * 1024)));
} else {
  system_info.append("Unknown RAM");
}

Linux (/proc/meminfo)

代码语言:javascript
运行
复制
QProcess p;
p.start("awk", QStringList() << "/MemTotal/ { print $2 }" << "/proc/meminfo");
p.waitForFinished();
QString memory = p.readAllStandardOutput();
system_info.append(QString("; RAM: %1 MB").arg(memory.toLong() / 1024));
p.close();

Mac (sysctl)

代码语言:javascript
运行
复制
QProcess p;
p.start("sysctl", QStringList() << "kern.version" << "hw.physmem");
p.waitForFinished();
QString system_info = p.readAllStandardOutput();
p.close();
票数 53
EN

Stack Overflow用户

发布于 2012-08-29 10:23:30

在POSIX OSes (Linux,Solaris,也许是最新的MacOS.)上要好得多:

  • getrusage(...)特别关注ru_maxrss.
  • getrlimit(...)但是我没有找到任何有用的信息-- into.
  • sysconf(...):_SC_PAGESIZE,_SC_PHYS_PAGES,_SC_AVPHYS_PAGES
  • sysinfo(...):极权,自由,共享,交换,.

在POSIX电脑上有这么多的珍宝在Windows上是买不到的。

票数 3
EN

Stack Overflow用户

发布于 2011-11-14 13:49:36

这在Qt中目前是不可能的。您需要对不同的OS内存调用进行查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8122277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档