`
小滔哥
  • 浏览: 58971 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Linux free命令 ------笔记

 
阅读更多
  • 参数用法说明

man free 可以得到详细的信息,这里贴个中文的,读起来快。

 

语  法:  free [-bkmotV][-s < 间隔秒数 >]

补充说明: free 指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

参  数:

  -b   以 Byte 为单位显示内存使用情况。

  -k   以 KB 为单位显示内存使用情况。  

  -m   以 MB 为单位显示内存使用情况。  

  -o   不显示缓冲区调节列。  

  -s< 间隔秒数  持续观察内存使用状况。  

  -t   显示内存总和列。  

  -V   显示版本信息。

 

  • free输出内容解析

             total       used       free     shared    buffers     cached
Mem:       1022420     665104     357316          0     107012     278204
-/+ buffers/cache:     279888     742532
Swap:      1045500     223188     822312

 

  • Mem这一行 :

      total 物理内存总数 : 1022420

      used 已经使用的内存数 : 665104

      free 空闲的内存数 : 357316

      shared 当前已经废弃不用,总是 0

      buffers Buffer Cache 内存数 : 107012

      cached Page Cache 内存数 : 278204

      关系: total = used + free

 

  • -/+ buffers/cache这一 :

      -buffers/cache 的内存数: 279888 ( 等于第 1 行的 used - buffers - cached), 实际上是应用程序所使用的内存。
       +buffers/cache
的内存数 : 742532 ( 等于第 1 行的 free + buffers + cached), 是对应用程序来说还剩余的内存。

 

      可见 -buffers/cache 反映的是被程序实实在在吃掉的内存,而 +buffers/cache 反映的是可以挪用的内存总数。

对操作系统来讲 buffers/cached 都是属于被使用 , 所以它认为 free 只有 357316.

      对应用程序来讲是 (-/+ buffers/cach).buffers/cached 是等同可用的,因为 buffer/cached 是为了提高程序执行的性能,当程序使用内存时, buffer/cached 会很快地被使用。

 

  • 第三行是交换分区 swap, 列出已使用、空闲的 swap.

      SWAP 就是 LINUX 下的虚拟内存分区 , 它的作用是在物理内存使用完之后 , 将磁盘空间 ( 也就是 SWAP 分区 ) 虚拟成内存来使用。 Swap 空间的作用可简单描述为:当系统的 物理内存 够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的 空间被临时保存到 Swap 空间中,等到那些程序要运行时,再从 Swap 中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行 Swap 交换

 

  • buffers cached 都是缓存,两者有什么区别呢?

 

      为了提高磁盘存取效率 , Linux 做了一些精心的设计 , 除了对 dentry 进行缓存 ( 用于 VFS, 加速文件路径名到 inode 的转换 ), 还采取了两种主要 Cache 方式: Buffer Cache Page Cache 。前者针对磁盘块的读写,后者针对文件 inode 的读写。这些 Cache 有效缩短了 I/O 系统调用 ( 比如 read,write,getdents) 的时间。

      磁盘的操作有逻辑级(文件系统)和物理级(磁盘块),这两种 Cache 就是分别缓存逻辑和物理级数据的。

      Page cache 实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到 page cache 。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当 page cache 的数据需要刷新时, page cache 中的数据交给 buffer cache ,因为 Buffer Cache 就是缓存磁盘块的。但是这种处理在 2.6 版本的内核之后就变的很简单了,没有真正意义上的 cache 操作。

      Buffer cache 是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到 buffer cache 中,例如,文件系统的元数据都会缓存到 buffer cache 中。
       简单说来, page cache 用来缓存文件数据, buffer cache 用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到 page cache ,如果直接采用 dd 等工具对磁盘进行读写,那么数据会缓存到 buffer cache

      所以我们看 linux, 只要不用 swap 的交换空间 , 就不用担心自己的内存太少 . 如果常常 swap 用很多 , 可能你就要考虑加物理内存了 . 这也是 linux 看内存是否够用的标准 .

      如果是应用服务器的话,一般只看第二行, +buffers/cache, 即对应用程序来说 free 的内存太少了,也是该考虑优化程序或加内存了。

 

  • 后记

想起来记录 free 的一些东西,缘由是某 java 应用 crash 了,从 crashlog 中看到 crash 时,物理内存剩下仅十几 M ,出错的点是 jvm 内部 malloc 失败,估计很可能是内存不够用导致。于是想了解下内存相关的一些信息, crash log 中输出的内容和 free 命令中输出的第二行结果是一致的。因此想了就关注了 free 这个命令输出的一些信息解释。现在看来,上面的推测可能成立,但是还缺少一些依据,需要当时场景的更多信息才能判断出是不是这个原因。

 

内容参考下面链接汇总而成。

      http://www.linuxso.com/command/free.html

      http://baike.baidu.com/view/418446.htm

      http://www.ddvip.com/mc/os/linux/1413.html

分享到:
评论

相关推荐

    Linux常用命令笔记

    ### Linux常用命令笔记 #### 一、Linux命令基础 Linux是一种强大的开源操作系统,适用于服务器、桌面和嵌入式系统等多种应用场景。了解基本的Linux命令对于有效地管理这些系统至关重要。 ##### 查看帮助文档 - *...

    linux学习笔记,linux命令整理

    这篇笔记主要涵盖了多个方面的Linux基础知识,包括常用命令、磁盘管理、用户管理、文件权限、软件安装、进程管理、资源监控、系统服务、网络管理、性能优化以及常见问题的解决。下面我们将详细探讨这些知识点。 1. ...

    linux基础命令笔记

    ### Linux基础命令笔记 #### 常用命令详解 ##### 磁盘管理 - **ls**:列出目录内容。 - `-a`:显示所有文件和目录,包括隐藏文件。 - `-l`:使用详细格式列出文件信息。 - `-t`:按照文件最后修改时间排序。 -...

    FreeMind-Windows-Installer-0.8.1-max.zip_FreeMind_Java 8_思维导图_思维

    而对专业人士来说,FreeMind的灵活性和扩展性使其成为项目管理、学习笔记、创意构思等多场景的理想工具。 总结来说,FreeMind是一款功能强大的思维导图软件,它以Java为基础,适用于Windows环境。通过下载并安装...

    Linux运维必会命令笔记

    ### Linux运维必会命令笔记 #### 一、基础命令与环境熟悉 - **Shell提示与命令格式** - **Shell提示符**: - `[root@wang ~]#` 表示当前用户为 `root`。 - `[user@host directory]$` 表示普通用户登录,`user` ...

    linux-memory-manage.rar_Linux 内存管理_linux_memory_内存管理 linux_内存管理

    9. 内存管理工具:`free`命令显示当前系统的内存使用情况,`top`和`htop`可以实时监控进程内存占用,`smem`报告详细的内存使用报告,包括物理和交换内存。 10. 调优策略:Linux内存管理可以通过调整内核参数来优化...

    KALI linux学习记录笔记

    ### KALI Linux 学习记录笔记 #### 一、KALI Linux 源地址更改及维护 在使用KALI Linux时,为了获得更快的下载速度和更新体验,通常会更换镜像源。例如,可以将源更换为中国阿里云提供的KALI镜像源。以下是具体...

    linux笔记 命令

    这份“Linux笔记”将带你深入理解并应用一系列常用的Linux命令。 一、文件和目录操作 1. `ls`:列出目录内容,`ls -l`显示详细信息,`ls -a`显示所有文件包括隐藏文件。 2. `cd`:改变工作目录,如`cd /home/user`...

    linux编程学习笔记PDF资料下载.txt

    - **内存分配**:Linux提供了多种方式来分配内存,如malloc()、calloc()、realloc()、free()等函数。 - **共享内存**:多个进程之间可以通过共享内存段的方式实现通信。 - **内存泄漏检测**:使用valgrind等工具检测...

    学习笔记----图形界面程序Qt安装及其在2410-s上的移植

    在Red Hat Linux 9.0系统上,我们使用了以下软件:tmake-1.13、qt-x11-2.3.2和qt-embedded-2.3.10-free。这些文件应被放置在一个方便的目录(例如/root/2410sQt)下,便于后续操作。 Qt/Embedded平台的搭建分为几个...

    linux下C语言开发笔记整理

    Linux下C语言开发笔记整理涵盖了从基础知识到网络通信的多个方面,主要围绕在Unix/Linux系统环境下使用C语言进行软件开发的各项技术与理论。以下是从文件提供的信息中提炼的知识点。 ### Unix/Linux系统基本命令和...

    个人linux总结笔记

    【个人Linux总结笔记】 在Linux操作系统中,管理系统的配置和优化是日常运维的重要部分。以下是一些关于Linux的实用技巧和知识点: 1. **解决telnet登录慢的问题**: 当遇到telnet登录速度缓慢时,可能是DNS解析...

    Linux笔记centos6 有些命令centos7不适用.docx

    以下是对`Linux笔记centos6 有些命令centos7不适用.docx`中提到的一些核心目录的详细介绍: - **Bin**:此目录存储了系统中的常用命令和实用工具,这些工具对于普通用户来说非常重要。 - **Dev**:这是一个特殊的...

    Linux命令笔记

    第一部分:常用命令 常用命令/文件处理 0:基础功能 1:ls 显示文件目录 语法:ls 选项[-ald][文件或目录] 2:cat 显示文件内容(内容少适合) 语法:cat[文件名] 3:tac 显示文件内容 语法:tac[文件名] 4:more 分页...

    linux命令大全和笔记.chm

    "Linux命令大全和笔记.chm"这个压缩包提供了一份详尽的Linux命令参考资料,帮助用户快速学习和解决Linux环境中的各种问题。以下是基于该资源的Linux命令相关知识点的详细解释: 1. **基础命令**:Linux命令行界面...

    Linux命令学习手册

    在提供的文件列表中,"详细个人整理笔记.exe"可能包含了作者个人对这些概念的深入理解和实践案例,"config.ini"可能是配置文件,而"Linux命令手册.pdf"则是手册的主体部分,包含详细的命令解释和示例。通过阅读这些...

    推荐一本Linux学习笔记

    ### 推荐一本《Linux学习笔记》的知识点详解 #### 第一章 Linux简介及安装 **一、Linux介绍** - **Linux起源与定义**:Linux 是由芬兰大学生 Linus Torvalds 在 1991 年发起的一个开源项目。它是一种基于 Unix 的...

    Linux就该这么学笔记(一)

    ### Linux就该这么学笔记(一) #### 第一章 基础知识 **1. 查看机器是否是 Red Hat 系统** - 使用 `cat /etc/redhat-release` 命令可以查看当前系统是否为 Red Hat 系统及其版本信息。 - 示例输出:`Red Hat ...

    linux运维笔记:最常用的150个命令.docx

    9. free命令:查看系统内存。 10. date命令:显示与设置系统时间。 11. cal命令:查看日历等时间信息。 五、搜索文件命令(4个) 1. which命令:查找二进制命令的绝对路径,按环境变量PATH路径查找。 2. whereis...

Global site tag (gtag.js) - Google Analytics