当前内存占用率的计算,是根据top命令显示的Mem.used除以Mem.total得到。

  1. Mem.total:表示总物理内存。
  2. Mem.used: 表示内核控制的内存数,除了应用程序使用的内存外,还包括缓存。

Mem.used =  应用程序使用内存  + Mem.buffers + Mem.cached

Linux的内存管理机制,会尽可能缓存一些数据,就算程序本身已经释放相关内存,Buffers/cached也不会立即释放。

但在需要的时候Buffers/cached都是可以被丢弃并快速回收的。

  1. 反过来,Mem.free:   表示还未纳入内核管理范围的内存(完全未被使用)。

有时候看上去可用内存很少,但实际还是比较充足的。从应用程序角度,buffers和cached也属于可用。

实际可用内存 = Mem.free + Mem.buffers + Mem.cached.

所以, 由于buffeds/cached机制,服务器在运行一段时间以后uesd内存的值越来越大。

基于此计算的内存占用率结果比实际偏高,而且还可能偏高很多。

举例,在服务器用vi打开文件,此时文件数据纳入缓存,内存占用随之增加。但这并不是应用程序占用的内存。

linux139:/srv # free -m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
linux139:/srv # vim test.log
linux139:/srv # ll -sh test.log
30M -rw------- root root 30M Mar : test.log
linux139:/srv # free -m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
lin # top
top - :: up :, users, load average: 0.21, 0.11, 0.09
Tasks: total, running, sleeping, stopped, zombie
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 19953M total, 1163M used, 18790M free, 20M buffers
Swap: 16384M total, 0M used, 16384M free, 116M cached

手工清理缓存方式:

sync ;echo 3 > /proc/sys/vm/drop_caches

linux 服务器内存占用统计的更多相关文章

  1. 转 linux 服务器内存占用统计

    linux 服务器内存占用统计  原文: https://www.cnblogs.com/eaglediao/p/6641811.html 当前内存占用率的计算,是根据top命令显示的Mem.used ...

  2. linux服务器内存占用太高-释放内存

    修改/proc/sys/vm/drop_caches,释放Slab占用的cache内存空间(参考drop_caches的官方文档): Writing to this will cause the ke ...

  3. Linux系统内存占用90%以上 ?

    问题: [root@dbserver01 zx_epp_db]# free -m total used free shared buffers cached Mem: 15953 14706 1246 ...

  4. Linux系统内存占用90%以上——解决方法

    Linux系统内存占用90%以上--解决方法   首先要明确一个问题:Linux系统内存占用90%以上,是否属于正常范围?网上有详细的解释,这属于正常现象~~~    www.2cto.com   L ...

  5. 如何使用Linux命令行查看Linux服务器内存使用情况?

    一个服务器,最重要的资源之一就是内存,内存够不够用,是直接关系到系统性能的关键所在. 本文介绍如何查看Linux服务器内存使用情况, 1.free命令 free -m [root@localhost ...

  6. 查看Linux服务器内存使用情况

    一个服务器,最重要的资源之一就是内存,内存够不够用,是直接关系到系统性能的关键所在. 本文介绍如何查看Linux服务器内存使用情况, 1.free命令 free -m [root@localhost ...

  7. Linux服务器内存池技术是如何实现的

    Linux服务器内存池技术是如何实现的

  8. 记录Redis连接未正确释放,TCP连接过多,造成服务器上部分功能不可用和linux服务器内存一直增加问题

    问题1 多人共享开发服务器(windows系统),我们小组有个程序,定时检测mongodb,redis,mysql连接是否正常,程序启动一段时间后,服务器管理人员找到我们说,我们的某个pid的程序把T ...

  9. 【Linux】解决Linux服务器内存不足问题

    在Linux服务器上使用Jmeter进行压测的时候,遇到了一个错误: 根据这里的提示: Java HotSpot(TM) -Bit Server VM warning: INFO: os::commi ...

随机推荐

  1. 数据结构C语言实现

    顺序表实现 typedef int Position; typedef struct LNode *List; struct LNode { ElementType Data[MAXSIZE]; Po ...

  2. 面试题22:链表中倒数第k个节点

    # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x # self.next = None ...

  3. Visual C++中error spawning cl.exe解决办法

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 今天安装Vc6.0的时候出现了一个error spawning cl.exe的错误,在网上找了一些资料,才知道这是因为路径设置的问题引起的 ...

  4. Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ssm]]

    org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].Standard ...

  5. python系列——文件操作

    打开和关闭 示例:python系列——文件操作的代码 打开模式 读取 写入

  6. kubernetes容器集群自签TLS证书

    集群部署 1.环境规划 2.安装docker 3.自签TLS证书 4.部署Flannel网络 5.部署Etcd集群 6.创建Node节点kubeconfig文件 7.获取K8S二进制包 8.运行Mas ...

  7. 饿汉单例模式 and 懒汉单例模式

    饿汉单例模式:主要就是利用static关键字,在类加载的时候生成实例,调用效率高 但是如果一直没有调用getInstance方法的话,就会造成资源浪费 具体实现如下: class Single{ pr ...

  8. 三、IDS4建立authorization server

    建立authorization server 一.环境搭建 1.创建项目 2.引用NuGet的identityserver4 3.配置asp.net core 管道 打开Startup.cs, 编辑C ...

  9. Tomcat8.0源码编译

    最近打算开始研究一下Tomcat的工作原理,拜读一下源码.所以先从编译源码开始了.尽管网上有那么多的资料,但是总是觉得,自己研究一遍,写一遍,在动手做一遍能够让我们更加深入的了解.现在整个社会都流行着 ...

  10. Codeforces 961E - Tufurama 树状数组

    转自:https://blog.csdn.net/my_sunshine26/article/details/79831362 题目大意: i从1开始 基本思路: 完全没思路,所以上来就二分,果不其然 ...