獲取內存信息如何獲得這樣的信息:通過當前正在運行的應用程序所使用使用Qt
- 總內存
- 可用內存
- 記憶?
我認爲Qt應該有內存選項,這將是平臺無關的,但我無法找到它 。那麼當我想創建一個顯示內存狀態的獨立於平臺的應用程序時,我該怎麼辦?
獲取內存信息如何獲得這樣的信息:通過當前正在運行的應用程序所使用使用Qt
我認爲Qt應該有內存選項,這將是平臺無關的,但我無法找到它 。那麼當我想創建一個顯示內存狀態的獨立於平臺的應用程序時,我該怎麼辦?
不幸的是,Qt沒有內置任何內容。您必須按平臺完成此操作。
下面是一些示例以幫助您入門。就在上週我必須在我的一個應用程序中實現這一點。下面的代碼仍然在開發中;可能存在錯誤或泄漏,但它至少可以指導您正確的方向。我只對整個物理RAM感興趣,但其他值也可以用相同的方法獲得。 (也許除了使用內存的當前應用程序......不知道這一點的。)
的Windows(GlobalMemoryStatusEx)
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中)
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)
QProcess p;
p.start("sysctl", QStringList() << "kern.version" << "hw.physmem");
p.waitForFinished();
QString system_info = p.readAllStandardOutput();
p.close();
這是目前在Qt中不可能的。您將需要ifdef不同的操作系統內存調用。
對POSIX操作系統(Linux,Solaris和最新也許MacOS的...)好多了:
這麼多寶物上沒有POSIX電腦在Windows上。
http://stackoverflow.com/questions/27201876/memory-management-issue-with-deleting-qquickview-in-qt5-3mingw32/27203897#27203897 – dtech