有许多办法可以获得Linux系统上所安装内存的信息,并查看其中有多少内存正在使用中。有的命令会展示大量的细节,而有的命令则提供了简洁(但不一定容易理解)的结果。在这篇文章中将介绍一些更有用的工具,帮助你检查内存及其使用情况。

不过,在进一步讨论之前,我们要先回顾一些基本知识。物理内存和虚拟内存是不一样的,后者包括配置为交换区的磁盘空间。交换区可能包括为此用途预留的分区,或者那些为添加到新的交换区而创建的文件——当创建一个新的分区并不实际时。有些Linux命令提供了这两方面的信息。

交换区通过提供磁盘空间来扩展内存,这些磁盘空间可用于存放那些物理内存已满时移动到磁盘的非活动页。

在内存管理中起到作用的一个文件是/proc/kcore,这个文件看起来像一个普通的(虽然非常大)文件,但是它根本不占用磁盘空间。就像/proc中的所有文件一样,它是一个虚拟文件。

有趣的是,下面查询的两个系统没有安装相同数量的内存,但是/proc/kcore的大小在这两个系统上是相同的。第一个系统安装了4 GB内存,第二个有6 GB。

该文件的大小表示可用虚拟内存的数量(可能加上4K),这个解释可能站不住脚。这个数字表明这些系统上的虚拟内存是128 TB!这个数字代表64位系统能够寻址的内存数量,而不是系统上的可用内存数量。通过以下方式进行计算,再加上4 K,就可以推导出这个数字:

另一个更人性化的检查内存的命令是free命令,它可以提供一个易于理解的内存报告。

使用-g选项,free以gb为单位报告这些值。

使用-t选项,free显示的值与没有选项时显示的值相同(不要混淆-ttb),但是在输出的底部添加了一行。

当然,你也可以同时使用这两个选项。

如果你希望得到“这个系统上安装了多少RAM”的答案,那么你可能会对这个报告感到失望,这与上面示例中显示的具有6GB RAM的系统相同。并不表示这个报告是错的,而是系统对它所拥有的内存的看法。free命令还提供了每X秒(在下面的示例中为10秒)更新一次结果的选项。

使用-l, free命令可以提供高内存使用量和低内存使用量。

查看内存的另一个办法是/proc/meminfo文件。与/proc/kcore类似,这是一个虚拟文件,它提供了一个有用的报告,显示安装了多少内存、空闲内存和可用内存。显然,空闲和可用并不是一个意思。MemFree代表未使用的RAMMemAvailable是对启动新应用程序可用内存的估计。

如果只想查看总内存,可以使用以下命令之一:

DirectMap条目将内存上的信息分解成类别。

DirectMap4k表示映射到标准4k页面的内存量,而DirectMap2M表示映射到2MB页面的内存量。

getconf命令将提供的信息往往比较多。


使用如下所示的命令可以将输出缩减为特定的内容,你能够获得与上面的一些命令相同的信息。

该命令通过将输出的第一行和最后一行中的值相乘来计算内存,如下所示:

独立地进行计算,我们就可以看到这个值是如何推导出来的。

另一个输出非常容易理解的命令是toptop输出前5行中的数字显示了内存的使用情况。

最后这个命令将以简洁的方式回答“这个系统上安装了多少RAM ?

根据您希望看到的详细信息的多少,Linux系统提供了许多选项,可以查看系统上安装了多少内存,以及使用了多少内存和有多少可用内存。

Linux系统下分析内存使用情况的管理工具的更多相关文章

  1. 05 Linux系统下的用户以及用户权限管理(权限管理介绍、用户管理、常见命令介绍)

    这一节我们介绍Linux的用户以及权限管理的前半段,包括:1.权限管理介绍: 2.用户管理: 3.常见命令 权限管理介绍 权限管理: 为了访问计算机资源,我们需要对其进行授权才能访问,根据什么东西来进 ...

  2. linux系统下键盘按键的重新映射——xmodmap工具和xev工具

    大家会不会有时候,感觉键盘上的某几个键用起来不是很方便,打字打久了很容易手指头疼呢? 例如大家使用vim编辑器时, 经常需要使用到esc键,而该键在左上角,很不方便的.再比如写程序的时候,经常会使用到 ...

  3. linux free 命令 查看内存使用情况

    查看Linux服务器下的内存使用情况,可以使用命令free -m [root@localhost ~]$ free // 以KB为单位显示内存使用情况 [root@localhost ~]$ free ...

  4. 操作系统复习——如何查看一个进程的详细信息,如何追踪一个进程的执行过程 ,如何在 Linux 系统下查看 CPU、内存、磁盘、IO、网卡情况?epoll和select区别?

    1. 如何查看一个进程的详细信息,如何追踪一个进程的执行过程 通过pstree命令(根据pid)进行查询进程内部当前运行了多少线程:# pstree -p 19135(进程号) 使用top命令查看(可 ...

  5. Linux下查看内存使用情况方法总结

    Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

  6. Linux 下查看内存使用情况方法总结

    Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

  7. Linux性能优化:内存使用情况分析

    Blog:博客园 个人 目录 什么是内存 Linux内存回收机制 查看Linux内存情况 查看/proc/meminfo 使用free命令查看 Buffer和Cache Swap 内存泄漏和内存溢出 ...

  8. C/C++获取Linux系统CPU和内存及硬盘使用情况

    需求分析: 不使用Top  df  free 等命令,利用C/C++获取Linux系统CPU和内存及硬盘使用情况 实现: //通过获取/proc/stat (CPU)和/proc/meminfo(内存 ...

  9. Linux系统下fd分配的方法

    最近几天在公司里写网络通讯的代码比较多,自然就会涉及到IO事件监测方法的问题.我惊奇的发现select轮训的方法在那里居然还大行其道.我告诉他们现在无论在Linux系统下,还是windows系统下,s ...

随机推荐

  1. day46 html

    老师的笔记: day46 课程安排 HTML CSS JS基础 DOM操作 jQuery Bootstrap pymysql Django基础 项目实战 Vue.js 今日概要: "PUT ...

  2. Idea中lombok不生效原因

    我们可以通过在maven中插入配置信息 <dependency> <groupId>org.projectlombok</groupId> <artifact ...

  3. python-飞机大战

    效果图 main.py import time import pygame from EnemyPlane import EnemyPlane from HeroPlane import HeroPl ...

  4. 【LeetCode算法-13】Roman to Integer

    LeetCode第13题 Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symb ...

  5. Selenium+PhantomJS使用时报错原因及解决方案(转)

    Selenium+PhantomJS使用时报错原因及解决方案     问题 今天在使用selenium+PhantomJS动态抓取网页时,出现如下报错信息: UserWarning: Selenium ...

  6. HDU 1175 连连看 (DFS+剪枝)

    <题目链接> 题目大意:在一个棋盘上给定一个起点和终点,判断这两点是否能通过连线连起来,规定这个连线不能穿过其它的棋子,并且连线转弯不能超过2次. 解题分析:就是DFS从起点开始搜索,只不 ...

  7. BeagleBone Black 从零到一 (2 MLO、U-Boot) 转

    文章原址:jexbat.com/categories/BeagleBone/ 什么是 U-Boot 熟悉嵌入式开发的应该都听过它,U-boot 就是启动系统前的一段引导程序,虽然是引导程序,但是功能非 ...

  8. swap

    添加交换分区 SWAP(交换)分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术,其设计目的是为了解决真实物理 ...

  9. 环形动画加载视图AnimatedCircleLoadingView​​​​​​​

    环形动画加载视图AnimatedCircleLoadingView AnimatedCircleLoadingView是基于Android手表动画android-watch-loading-anima ...

  10. angular笔记_4(函数)

    angular.isString();是否字符串 angular.isNumber();是否数字 angular.isArray();是否数组 angular.isDate();是否日期/时间 ang ...