Linux內存管理中的RSS和VSZ是什麼?在多線程環境中,這些可以如何管理和跟蹤?什麼是Linux內存管理中的RSS和VSZ
回答
他們沒有管理,但測量和可能有限(請參閱getrlimit
系統調用,也在getrlimit(2))。
RSS表示resident set size(虛擬地址空間的一部分坐在RAM中)。
可以查詢過程1234的使用proc(5)與cat /proc/1234/maps
及其狀態(包括內存消耗)通cat /proc/1234/status
這個鏈接可能回答這個問題,最好在這裏包含答案的基本部分,並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/18966880) – Maak
我提供了第二個鏈接。其中一個將保持有效 –
RSS的virtual address space是駐留集大小(物理駐留內存 - 這在機器的物理內存目前佔用空間),而VSZ是虛擬內存大小(地址空間分配 - 這個地址分配在進程的內存映射中,但是現在不一定有任何實際的內存)。
請注意,在常見虛擬機的這些日子裏,機器視點的物理內存可能不是真正的物理內存。
提供比簡稱更多的信息? – Pithikos
RSS是Resident Set Size(駐留集大小),用於顯示爲該進程分配了多少內存並位於RAM中。它不包括被換出的內存。只要來自這些庫的頁面實際上在內存中,它就包含來自共享庫的內存。它確實包含了所有堆棧和堆內存。
VSZ是虛擬內存大小。它包括進程可以訪問的所有內存,包括被換出的內存和來自共享庫的內存。
因此,如果進程A有一個500K的二進制文件,並鏈接到共享庫2500K,具有200K的堆棧/堆分配,其中100K實際上在內存中(其餘部分被交換),並且實際上只加載了1000K的共享庫和自己的二進制的400K則:
RSS: 400K + 1000K + 100K = 1500K
VSZ: 500K + 2500K + 200K = 3200K
由於記憶的一部分是共享的,許多過程可能會使用它,因此,如果你把所有的RSS值,你可以很容易地用得比較多空間,最終你係統有。
還有PSS(比例組大小)。這是一種較新的方法,它將共享內存作爲當前進程使用的比例進行跟蹤。因此,如果有使用相同的共享庫由前兩個過程:
PSS: 400K + (1000K/2) + 100K = 400K + 500K + 100K = 1000K
線程共享相同的地址空間,所以RSS,VSZ和PSS爲每個線程是相同的所有過程中的其他線程。使用ps或top在linux/unix中查看這些信息。
沒有比這樣更給它,瞭解更多檢查以下參考資料:
- http://manpages.ubuntu.com/manpages/en/man1/ps.1.html
- https://web.archive.org/web/20120520221529/http://emilics.com/blog/article/mconsumption.html
另見:
我覺得很多已經說過,關於RSS vs VSZ。從管理員/程序員/用戶的角度來看,當我設計/編寫應用程序時,我更關心RSZ(駐留內存),因爲當你不停地拉動越來越多的變量(堆積)時,你會看到這個值開始上升。嘗試一個簡單的程序,在循環中構建基於malloc的空間分配,並確保在malloc'd空間中填充數據。 RSS繼續向上移動。 就VSZ而言,它更像是Linux所做的虛擬內存映射,它的核心功能之一源自傳統的操作系統概念。 VSZ管理由內核的虛擬內存管理完成,關於VSZ的更多信息,請參閱Robert Love關於mm_struct和vm_struct的描述,它們是內核中基本task_struct數據結構的一部分。
- 1. Android內存管理與Linux內存管理有什麼區別?
- 2. Linux內存管理
- 3. Linux內存管理(緩存)
- 4. 這是什麼內存管理角度?
- 5. Linux的RSS和共享內存
- 6. Linux內存管理和大文件
- 7. Unix/Linux中的JVM內存管理
- 8. 什麼是內存回收在linux中
- 9. 來自ps -e,rss與vsz的結果
- 10. cocos2dx 3.10中的內存管理是什麼?
- 11. Windows內存管理中的備用列表是什麼?
- 12. 管理Javascript內存中變量的最佳方式是什麼
- 13. 爲什麼手動內存管理?
- 14. 什麼消耗Linux中的內存
- 15. XCode的內存管理檢查是什麼?
- 16. 這段代碼的內存管理問題是什麼?
- 17. 「__block變量」內存管理的規則是什麼?
- 18. Heroku內存管理。什麼是每個工人的最大內存量
- 19. 瞭解Linux內核中的TCP內存管理
- 20. 在linux中處理ping的是什麼?
- 21. 什麼是unix/linux內部?
- 22. 什麼是Linux內核源
- 23. IOS內存和內存管理
- 24. Monotouch中的靜態和內存管理
- 25. TDataSet和TClientDataset內存管理有什麼區別?
- 26. NSString和NSData內存管理
- 27. UIPopoverController和內存管理
- 28. HoughLinesP和opencv內存管理
- 29. 內存管理和Tkinter
- 30. Uialertview和內存管理
[Understanding the Linux oom-killer's logs](http://stackoverflow.com/questions/9199731/understanding-the-linux-oom-killers-logs) – msangel