在服务器运行过程中,使用free -m查看服务器内存时,经常会发现free值很小,有些同学就会很紧张,总想采取一些措施,使得free值看起来高一点,心里就比较爽一点。其实,个人觉得这完全是图一时之快,没什么实质性用途。

一、大众释放内存方法

1. 首先使用free -m查看剩余内存

view plaincopy to clipboardprint?

linux-8v2i:~ # free -m

total used free shared buffers cached

Mem: 3952 2773 178 0 130 1097

-/+ buffers/cache: 1545 2406

Swap: 2055 0 2055

linux-8v2i:~ # free -m

total used free shared buffers cached

Mem: 3952 2773 178 0 130 1097

-/+ buffers/cache: 1545 2406

Swap: 2055 0 2055

2. 执行sync命令

使用sync命令以确保文件系统的完整性,sync 命令运行 sync 子例程,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。

view plaincopy to clipboardprint?

linux-8v2i:~ # sync

linux-8v2i:~ # sync

3. 修改/proc/sys/vm/drop_caches

view plaincopy to clipboardprint?

echo 3 > /proc/sys/vm/drop_caches

echo 3 > /proc/sys/vm/drop_caches

说明:

1>. /proc是一个虚拟文件系统,我们可以通过对它的读写操作作为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。也就是说我们可以通过调整/proc/sys/vm/drop_caches来释放内存。

2>. 关于drop_caches的官方说明如下:

Writing to this file causes the kernel to drop clean caches,dentries and inodes from memory, causing that memory to becomefree.

To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;

to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;

to free pagecache, dentries and inodes, use echo 3 >/proc/sys/vm/drop_caches.

Because this is a non-destructive operation and dirty objects are not freeable, the user should run sync first.

3>. Linux内核会将它最近访问过的文件页面缓存在内存中一段时间,这个文件缓存被称为pagecache。

4.再使用free -m查看剩余内存,情况如下:

view plaincopy to clipboardprint?

linux-8v2i:~ # free -m

total used free shared buffers cached

Mem: 3952 1773 2325 0 0 80

-/+ buffers/cache: 1545 2406

Swap: 2055 0 2055

linux-8v2i:~ # free -m

total used free shared buffers cached

Mem: 3952 1773 2325 0 0 80

-/+ buffers/cache: 1545 2406

Swap: 2055 0 2055

二、Linux内存分析

1. 首先对free -m查看结果进行分析

view plaincopy to clipboardprint?

linux-8v2i:~ # free -m

total used free shared buffers cached

Mem: 3952 2773 178 0 130 1097

-/+ buffers/cache: 1545 2406

Swap: 2055 0 2055

linux-8v2i:~ # free -m

total used free shared buffers cached

Mem: 3952 2773 178 0 130 1097

-/+ buffers/cache: 1545 2406

Swap: 2055 0 2055

各参数含义:

total:总物理内存

used:已使用内存

free:完全未被使用的内存

shared:应用程序共享内存

buffers:缓存,主要用于目录方面,inode值等

cached:缓存,用于已打开的文件

-buffers/cache:应用程序使用的内存大小,used减去缓存值

+buffers/cache:所有可供应用程序使用的内存大小,free加上缓存值

其中:

total = used + free

-buffers/cache=used-buffers-cached,这个是应用程序真实使用的内存大小

+buffers/cache=free+buffers+cached,这个是服务器真实还可利用的内存大小

2. Linux的内存分配方式

大家都知道,Linux服务器为了提高效率,会提前申请内存,即使这些内存没有被具体应用使用,Linux也会提前申请这些内存,然后利用这些内存做缓存用,即将刚打开的文件系统存入cache中,这样对应的服务器free值会越来越少,buffers和cached会越来越大,因此给大家表象就是内存越来越少了,大家就紧张了;其实,大家完全不用紧张,Linux服务器在发现内存不足时,会自动清理cached区域,释放内存,然后继续增大cache,free继续减少。因此,那样手动降低内存使用率的方法,其实就是图一时之快,呵呵。

可用脚本,定时判断处理。

###清理内存缓存

used=`free -m | awk 'NR==2' | awk '{print $3}'`
free=`free -m | awk 'NR==2' | awk '{print $4}'`

echo "===========================" >> /var/log/mem.log
date >> /var/log/mem.log
echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >> /var/log/mem.log

if [ $free -le 2000 ] 
then
        sync && echo 1 > /proc/sys/vm/drop_caches
        sync && echo 2 > /proc/sys/vm/drop_caches
        sync && echo 3 > /proc/sys/vm/drop_caches
        echo "OK" >> /var/log/mem.log
else
        echo "Not required" >> /var/log/mem.log
fi

#Writing to this file causes the kernel to drop clean caches,dentries and inodes from memory, #causing that memory to becomefree.
#
#To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;
#
#to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;
#
#to free pagecache, dentries and inodes, use echo 3 >/proc/sys/vm/drop_caches.#
#
#Because this is a non-destructive operation and dirty objects are not freeable, the user should #run sync first.

转载于:https://blog.51cto.com/bensonzbs/1228426

LINUX占用太多内存的解决方法相关推荐

  1. 关于inodes占用100%的问题及解决方法续集如何解决clientmqueue目录文件太多

    今天nagios报警,一台mfschunkserver服务器的disk满了,于是我就登录到服务器df查看了下一看根90%,使用du -sh * 或 du -sh /* 查看目录的大小(也可以用我上次解 ...

  2. 桌面窗口管理器(dwm.exe)占用高内存的解决方法

    前往我的主页以获得更好的阅读体验桌面窗口管理器(dwm.exe)占用高内存的解决方法 - DearXuan的主页https://blog.dearxuan.com/2022/01/14/%E6%A1% ...

  3. linux weblogic 内存溢出,weblogic10内存溢出解决方法

    在开发过程中经常会遇到weblogic内存溢出问题,用下面的办法解决了. 找到domain/bin下的setDomainEnv.cmd文件,里面可以找到以下四行代码,将值该打一倍,重启服务. set ...

  4. 计算机开机内存占用80%,虚拟内存导致!Win10电脑开机后内存占用高达80%以上的解决方法...

    电脑使用一段时间都是正常的,电脑开机之后内存占用率基本在20-30%之间,不过现在开机后内存占用率飙升,内存基本占用80%以上,由于同时磁盘I/O也比较高,按照网上教程基本都是禁用superfetch ...

  5. 查看计算机内存占用快捷方式,电脑内存占用大的几种解决方法

    很多人玩着游戏或者看电影的时候,会跳出个提示,显示电脑内存占用大,电脑内存占用大是什么原因造成,针对这种问题有什么好的解决方法,就让小编告诉你们电脑内存占用大的几种解决方法. 电脑内存占用大的几种解决 ...

  6. html内存占用过大 ios,iOS12系统内存占用高怎么解决 iOS12系统内存占用高的两种解决方法...

    最近很有几位小伙伴表示自己升级至iOS12系统之后,表示系统内存占用非常高,不知道如何清理.其实这个问题不是简单实用那些清理软件可以解决的,那么iOS12系统内存占用高怎么解决?下面小编带来iOS12 ...

  7. pycharm在C盘创建.pycharm2019.3严重占用内存的解决方法

    转载自https://www.cnblogs.com/LuckBelongsToStrugglingMan/p/12689836.html pycharm在C盘创建.pycharm2019.3严重占用 ...

  8. CPU占用100%原因及解决方法

    CPU占用100%原因及解决方法 我们在使用Windows XP操作系统的时候,用着用着系统就变慢了,一看"任务管理器"才发现CPU占用达到100%.这是怎么回事情呢?遇到病毒了, ...

  9. 打印内存不足解决方法

    打印内存不足解决方法: 1.取消后台打印 在默认状态下,不少打印机都会启用后台打印功能,该功能的启用将会提高计算机的应用效率:不过,该功能是以牺牲系统资源为代价的,在计算机性能本不是很高的情况下,后台 ...

  10. linux启动停留在grub界面,启动linux停留在grub提示符的解决方法.doc

    启动linux停留在grub提示符的解决方法 想让系统直接启动到Windows,不出现Linux的Grub(或LILO)引导界面(Solution 1-3),或者是在Windows中删除了Linux分 ...

最新文章

  1. Spring Junit 读取WEB-INF下的配置文件
  2. ST单片机使用ST Visual Programmer软件烧录程序简易教程
  3. iOS应用跳转qq指定联系人聊天
  4. VUE v-bind绑定class和style
  5. java面试手写单链表_(转)面试大总结之一:Java搞定面试中的链表题目
  6. Win7 64位系统,使用(IME)模式VS2010 编写 和 安装 输入法 教程(1)
  7. 《Oracle高性能自动化运维》一一第1章 Linux下的Oracle
  8. java 对象 转换 工具类_Java中excel与对象的互相转换的通用工具类编写与使用(基于apache-poi-ooxml)...
  9. matplotlib绘制三维折线图
  10. 笔记3:Tensorflow2.0实战之MNSIT数据集
  11. hadoop——Map/Reduce中combiner的使用
  12. css 样式文字溢出显示省略号
  13. csdn 博客添加目录方法
  14. Labview实现画板
  15. 日志管理系统之保存日志到数据库
  16. 电压、电流、频率计算常见公式以及参数认识
  17. ubuntu键盘突然失灵怎么办?
  18. 计算机除氧化的方法,内存条氧化了的解决方法
  19. Android音频数据格式概述
  20. 计算机无法连接网络打印机,网络打印机无法连接的解决方法是什么

热门文章

  1. 中国计划建设自己的卫星导航系统
  2. 106 网络编程实战之基于socketserver实现多用户FTP服务器
  3. JAVA学习第六十三课 — 关于client服务端 amp;amp; URL类 amp; URLConnection
  4. 004 Leaflet 第四个demo 使用自己的图标替换marker图标
  5. java动态代理学习笔记
  6. 两个时间相减(vb.net)
  7. 网络之美:JavaScript中Get和Set访问器的实现
  8. vs2008补丁发布
  9. 在学校外边找了份工作
  10. 如何判断两物体加速度相等_高中物理知识点总结解题技巧:关联物体问题的求解方法...