指标
指标 | 含义 | 作用 |
MemTotal |
系统总内存 | 表示系统可用的总物理内存大小 |
MemFree |
系统空闲内存 | 表示当前未被使用的物理内存大小 |
MemAvailable |
可用内存 | 估算的可供应用程序启动而不需交换的内存 |
Buffers |
缓冲内存 | 由内核分配的缓冲区大小 |
Cached |
缓存内存 | 由内核分配的缓存大小,用于存储最近使用的文件数据 |
SwapCached |
交换缓存 | 已被交换出去的内存,但仍被存储在swap文件中,以便更快的重新调入内存 |
Active |
主动使用内存 | 最近被使用的内存,不太可能被移至swap(交换空间) |
Inactive |
不活跃内存 | 不常被使用的内存,更可能被移至swap |
SwapTotal |
交换总空间 | 系统总的交换空间大小 |
SwapFree |
空闲交换空间 | 当前未被使用的交换空间大小 |
Dirty |
脏页 | 等待被写回到磁盘的内存 |
Writeback |
正在写回 | 正在被写回到磁盘的内存 |
Slab |
Slab缓存 | 内核数据结构缓存 |
PageTables |
页表 | 管理虚拟地址空间的页表的内存 |
RSS |
常驻集大小 | 进程实际使用的物理内存大小 |
RES |
常驻内存大小 | 类似于RSS,进程实际使用的物理内存大小 |
查询方式
要检查和分析系统内存和进程内存使用情况,以下是您可以使用的主要指标,以及每个工具的含义、作用和分析方法:
ps
的rss
(Resident Set Size):
- 含义: 表示进程的常驻内存集大小,即进程当前使用的物理内存量。
- 作用: 用于评估单个进程的内存占用。
- 分析方法: 使用
ps
命令(如ps aux
)查看rss
值,以了解进程的内存使用情况。较高的rss
值可能表明进程正在使用大量物理内存。
top
的RES
(Resident Memory Size):
- 含义: 同
ps
的rss
,表示进程的常驻内存集大小。 - 作用: 提供实时更新的进程内存使用情况。
- 分析方法: 在
top
命令中观察RES
列,以监控进程的内存使用。top
还可以按内存使用量对进程进行排序,帮助识别内存使用最多的进程。
free
命令:
- 含义: 显示系统内存的总量、使用量、空闲量以及缓存和缓冲区的使用情况。
- 作用: 快速了解系统的内存使用概况。
- 分析方法: 运行
free
命令,关注used
和free
列,以及buffers/cache
行,这可以帮助您了解系统内存的使用和可用性。
/proc/meminfo
文件:
- 含义: 提供详细的系统内存使用信息。
- 作用: 用于深入分析系统内存使用情况。
- 分析方法: 使用
cat /proc/meminfo
查看详细的内存信息。您可以找到如MemTotal
,MemFree
,Buffers
,Cached
,SwapTotal
,SwapFree
等关键指标,以及其他内核内存使用情况的指标,如Slab
和PageTables
。
使用这些工具和指标时,您可以按照以下步骤进行分析:
- 步骤1: 使用
free
命令获取内存使用的概览。 - 步骤2: 如果需要实时监控或查看特定进程的内存使用情况,使用
top
或ps
。 - 步骤3: 对于更深入的分析,如内存泄漏或详细的内存分配情况,查看
/proc/meminfo
。
通过这些步骤,您可以建立一个全面的内存使用情况视图,从而更有效地管理和优化系统资源。
命令之间的差异
ps
的rss
与top
的RES
:
ps
命令中的rss
值和top
命令中的RES
值确实都表示进程的常驻内存集大小,即进程当前使用的物理内存量。- 通常,这两个值是类似的,因为它们都是从内核中获取相同的信息。
- 然而,
top
提供了一个动态的、实时更新的视图,包括系统的整体性能指标和每个进程的性能指标,而ps
通常用于一次性查看进程的状态。 - 如果您只是想快速查看某个进程的内存使用情况,
ps
可能更方便。如果您想要一个持续更新的系统性能概览,包括内存使用,top
会更合适。
free
与cat /proc/meminfo
:
free
命令提供了一个简洁的总结,显示了系统内存的总量、使用量、空闲量以及缓存和缓冲区的使用情况。/proc/meminfo
提供了更详细的信息,包括所有free
显示的内容以及更多细节,如Slab重用内存、PageTables的使用情况等。- 对于想要快速了解内存概况的用户来说,
free
命令通常就足够了。而对于需要详细内存信息的高级用户或开发人员,/proc/meminfo
提供了更全面的数据。
在实际使用中,您可以根据需要选择合适的工具。如果您需要实时监控和全面的进程内存使用情况,top
是一个好工具。如果您需要快速了解系统内存使用的快照,free
是一个简单的选择。如果您需要进行详细的内存分析或故障排除,/proc/meminfo
将提供最详尽的信息。
结语
在我们的编程学习之旅中,理解是我们迈向更高层次的重要一步。然而,掌握新技能、新理念,始终需要时间和坚持。从心理学的角度看,学习往往伴随着不断的试错和调整,这就像是我们的大脑在逐渐优化其解决问题的“算法”。
这就是为什么当我们遇到错误,我们应该将其视为学习和进步的机会,而不仅仅是困扰。通过理解和解决这些问题,我们不仅可以修复当前的代码,更可以提升我们的编程能力,防止在未来的项目中犯相同的错误。
我鼓励大家积极参与进来,不断提升自己的编程技术。无论你是初学者还是有经验的开发者,我希望我的博客能对你的学习之路有所帮助。如果你觉得这篇文章有用,不妨点击收藏,或者留下你的评论分享你的见解和经验,也欢迎你对我博客的内容提出建议和问题。每一次的点赞、评论、分享和关注都是对我的最大支持,也是对我持续分享和创作的动力。