zoukankan      html  css  js  c++  java
  • linux free 命令 查看内存使用情况

    查看Linux服务器下的内存使用情况,可以使用命令free -m

    [root@localhost ~]$ free       // 以KB为单位显示内存使用情况
    [root@localhost ~]$ free -m    // 以MB为单位显示内存使用情况
    [root@localhost ~]$ free -g    // 以GB为单位显示内存使用情况
    free -m
                 total       used       free     shared    buffers     cached
    Mem:         48211      18670      29541          0        798      15510
    -/+ buffers/cache:       2361      45850
    Swap:         3999          0       3999
    
    //Mem:物理内存使用情况
    
    //swap:交换分区情况
    
    //+buffers/cache:(可用)的内存数,即free+buffers+cached
    
    //-buffers/cache:(已用)的内存数,即used-buffers-cached
    
    //total:物理内存总大小 当前49GB
    
    //used:已经使用的物理内存大小 当前19GB
    
    //free:空闲的物理内存大小  当前46G
    
    //shared:多个进程共享的物理内存大小
    
    //buffers Buffer:缓存内存数 当前798MB
    
    //cached Page:缓存内存数 当前16GB
    
     
    
    可用内存的计算公式为:
    
    可用内存=free+buffers+cached
    即29541MB
    +798MB+15510MB=45849MB

    其中,内存总数与已使用内存数和空闲内存数的关系是:

    total(49GB)=used(19G)+free(30G)

    在第二部分内容(-/+buffers/cache)中各参数如下所示。

    (-buffers/cache):已用的used内存数,即2.361G(指的是第一部分Mem行中的used-buffers-cached)。 (18670-798-15510)

    (+buffers/cache):可用的free内存数,即45850G(指的是第一部分Mem行中的free+buffers+cached)。

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

    centos7 free -h命令

    [root@localhost ~]$ free -h    // 自动转换单位显示内存使用情况(centos7才有)

    输出结果:

    [root@MongoDB ~]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           652M        169M        222M        5.6M        261M        350M
    Swap:          4.0G          0B        4.0G
    
    
    // Mem:物理内存的使用情况
    // Swap:交换分区的使用情况
    
    // total 总物理内存大小
    // used 已经使用的物理内存大小
    // free:空闲的物理内存大小
    
    // shared:多个进程共享的物理内存大小
    // buff/cache:用做缓冲/缓存的物理内存大小
    // available:还可用的物理内存大小
    
    // total 总内存 = used + free + buff/cache
    // available 还能用的内存 = free + buff/cache
    // 如果使用到交换分区,则表明物理内存不够或内存泄漏了
    
    // 关于 buffer 和 cache:
    // 我们的数据是存放在磁盘上的,数据是交给CPU进行处理的,但磁盘的运转速度很快,CPU的运转速度很慢,不可能直接把磁盘的数据直接丢给CPU进行处理,因此要经过
    // 一个中间层,即内存,我们把这部分内存称为缓存(cache);相反地,CPU把数据处理完了,要存放到磁盘中,也要经过内存这个中间层,这部分内存则称为缓冲(buffer)
    // 因此,数据的流向不一样,内存的角色也不一样。系统会优先预留一部分内存给 buff/cache 使用,剩下的内存再留给系统或程序使用
  • 相关阅读:
    Hibernate的游离态与持久态转换
    怎样区分直连串口线和交叉串口线?
    JAVA 内存泄露的理解
    leetcode第一刷_Validate Binary Search Tree
    Java程序猿的JavaScript学习笔记(8——jQuery选择器)
    Android二维码开源项目zxing用例简化和生成二维码、条形码
    Android Service 服务(一)—— Service
    一个简单的文本编辑器。(是在DEV C++下写的)
    我的Hook学习笔记
    ios网络学习------8 xml格式数据的请求处理 用代码块封装
  • 原文地址:https://www.cnblogs.com/mingerlcm/p/10305025.html
Copyright © 2011-2022 走看看