如何從Linux系統上的C++代碼中獲取總內存,已用內存,可用內存?如何獲取Linux系統上的內存信息?
0
A
回答
0
通過valgrind
運行您的程序。對於一個名爲foo
程序,例如:
valgrind foo
則會在跟蹤內存使用的線束運行程序,並打印出信息的程序結束之後。
如果您沒有安裝valgrind
由於某種原因,您應該能夠在您的發行版的軟件包存儲庫中找到它。
0
正如Chris Stratton所述,您可以在Linux上查詢很多系統信息,如/proc/
,所以請閱讀proc(5);其中包含文本僞文件(有點像管道)以便順序讀取。這些不是真正的磁盤文件,因此讀取速度非常快。您需要在每次測量時打開並關閉它們。
從一個過程中,您可以使用/proc/self/maps
和/proc/self/smaps
查詢其的virtual memory;在該過程之外,對於另一個pid 1234的過程,使用/proc/1234/maps
& /proc/1234/smaps
;你可以得到系統範圍內的內存信息直通/proc/meminfo
因此,嘗試在終端以下命令:
cat /proc/meminfo
cat /proc/$$/maps
cat /proc/$$/smaps
cat /proc/self/maps
瞭解更多的什麼,他們可以給你。
要知道,(使用new
和delete
)malloc
和free
使用像mmap(2)系統調用往往要求空間(從內核),但先前管理-d free
內存重用,所以往往不釋放內存回到內核munmap
。在C memory management上閱讀wikipage。換句話說,使用的堆在進程外不可訪問(因爲某些未使用,但對未來可重複使用malloc
-s,內存仍爲mmap
-ed)。另見mallinfo(3)和malloc_stats(3)。使用valgrind來檢測內存泄漏。
Advanced Linux Programming是一本很好的書。它有幾個相關的章節。
相關問題
- 1. Linux系統監視器如何獲取進程統計信息
- 2. 如何在Windows和Linux上讀取C++中的系統信息?
- 3. 如何通過C庫獲取Linux硬件和系統信息?
- 4. 如何使用純qml linux獲取系統,用戶信息
- 5. Linux API獲取有關文件系統的信息
- 6. 的Qt - 獲取系統信息
- 7. 在linux中獲取圖形卡信息(/ proc文件系統)
- 8. 使用Lazarus和FreePascal獲取Linux系統信息
- 9. 如何使用node.js獲取系統統計信息
- 10. 我如何在PHP中獲取系統統計信息
- 11. 獲取系統帳戶信息java?
- 12. 用Postgresql獲取系統操作信息
- 13. 使用c獲取系統信息#
- 14. 使用Reg Query獲取系統信息
- 15. 使用Pyro4獲取系統信息
- 16. 使用c獲取系統信息#
- 17. 獲取系統信息,如操作系統版本,電池,存儲空間,內存等
- 18. 如何獲取操作系統信息,無論是LINUX還是WINDOWS?
- 19. 捕獲系統信息
- 20. PHP獲取系統信息內存使用率和存儲使用率
- 21. 獲取不存在的系統用戶信息,而不輸出
- 22. Linux系統和服務信息
- 23. 如何獲取有關係統視圖索引的信息
- 24. 如何從文件系統匹配的行中獲取信息?
- 25. 如何使用Java獲取操作系統級別的信息?
- 26. 如何從我的應用程序獲取系統信息?
- 27. 如何獲取有關磁盤文件系統的信息?
- 28. 如何獲取Telegram Bot統計信息?
- 29. 如何獲取播放統計信息
- 30. Scapy - 如何獲取統計信息?
讀取/ proc中的僞文件。他們有一個聯機幫助。 – 2014-10-17 18:15:44
可能的重複,取決於您希望系統級還是特定於進程的信息:[如何在運行時使用C++獲取內存使用量](http://stackoverflow.com/q/669438/464709) – 2014-10-17 18:19:39