在一些編程競賽中,問題有內存限制(如64MB或256MB)。如何用bash命令理解我的程序(用C++編寫)所使用的內存?有沒有辦法限制程序使用的內存?如果程序使用的內存超過限制,程序應該終止。瞭解bash中的程序使用的內存(在ubuntu linux中)
回答
命令頂部將顯示所有正在運行的進程以及當前內存和交換的列表,或者如果您更喜歡使用GUI,則可以使用系統監視器應用程序。
至於鎖定內存使用情況,您始終可以使用ulimit -v設置進程的最大虛擬地址範圍。這會導致malloc及其夥伴失敗,如果他們嘗試獲得超出設定限制的內存。
程序運行時間不到一秒鐘,我怎麼能說'頂部命令來監視我的程序?在'top'的輸出中,哪一列顯示了我的程序使用的內存? ulimit -v'是否限制我的程序使用的內存?(虛擬內存是什麼意思?) – Farzam 2012-01-31 18:28:17
如果你的進程比top快,那麼它不會是最好的。你可以嘗試Valgrind --tool = massif(你的命令)。虛擬地址空間是程序要求運行的所有內存。由於操作系統負責發送內存,因此不必實際映射回RAM中的特定位置。例如,你可能在dimm開始時有20kb,中間有20kb,但操作系統使它看起來像一個很好的塊。 – RussS 2012-01-31 18:34:36
「valgrind --tool = massif MY_COMMAND」應該打印什麼?它打印== 4587 ==。這是什麼意思? – Farzam 2012-01-31 19:01:16
根據您想要投入多少工作,您可以查看getrusage(),getrlimit()和setrlimit()。出於測試目的,您可以在程序開始時給他們打電話,或者在父母程序中設置它們,並且在孩子時候關閉比賽程序。然後,當您提交您的計劃供比賽考慮時,請免除這些費用。
- 1. 在linux中的程序內存佈局
- 2. 瞭解Linux內核驅動程序
- 3. 在Linux中監視程序的內存使用情況
- 4. 瞭解C++中的內存順序
- 5. 瞭解Linux內核中的TCP內存管理
- 6. 瞭解Android應用程序中的內存泄漏
- 7. 瞭解Linux內核中的異常
- 8. 瞭解linux調度程序
- 9. 限制Linux中程序的內存使用情況
- 10. 瞭解bash中的$'引號
- 11. 瞭解Java中的進程[linux]
- 12. 如何在Linux Ubuntu中編譯驅動程序/內核模塊?
- 13. 應用程序中分配了很多內存,如何解決?
- 14. Linux上多線程C++應用程序中的內存泄漏
- 15. 在Linux中使用bash腳本計算可用內存的百分比
- 16. 瞭解應用程序內存使用情況
- 17. 瞭解linux中的管道
- 18. 在多線程應用程序中使用內存中的orientdb
- 19. UMDF瞭解與Linux內核模塊/驅動程序的比較
- 20. 在Linux中使用GDAL API的程序
- 21. 瞭解Jetty的內存使用情況
- 22. Linux中的內存使用情況R
- 23. 內存在Linux中
- 24. 整體CPU使用率和在Linux的百分比內存(RAM)使用/ Ubuntu的
- 25. 需要幫助,以瞭解我的Android應用程序中的內存泄漏
- 26. 瞭解的虛擬內存限制爲32位應用程序
- 27. 檢測並移除Linux應用程序中的內存泄漏
- 28. 這是Linux Mono應用程序中的內存泄漏嗎?
- 29. 如何使用linux中的線程與主程序共享內存
- 30. 當我使用「cd //」時,在linux bash中發生了什麼?
我建議'幫助ulimit'。你可能會發現AskUbuntu是一個更好的地方,用於解決基本shell特性(比如資源限制)和監控問題('ps'可以工作,或者頂部) – derobert 2012-01-31 18:26:24