Linux 内存使用检查及释放内存

如何查看linux内存使用:

1.free -g 命令 或 free -h

total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。

  1. 使用 cat /proc/meminfo 查看内存详细使用

  1. atop查看
    通过atop动态显示系统资源(cpu、内存、网络、输入/输出、内核),并且高亮标准高负载的部分,内存统计报告包括了总计/闲置内存、缓存的/缓冲的内存和已提交的虚拟内存。

[root@server~]# yum install atop
[root@server~]# atop

  1. htop查看
    Htop命令是一个机遇ncurses的交互式进程视图,实时显示了每个进程的内存使用情况。可以报告所有运行中进程的常驻内存大小(RSS)、内存中程序的总大小、库大小、共享页面大小,也可以横向或纵向滚动进程列表进行查看。
    [root@server~]# yum install htop
    [root@server~]# htop

  1. Gnome System Monitor
    Gnome 系统的图形化界面监控程序,展示cpu、内存、交换区和网络在内的系统资源使用率
    前提是需要安装gnome图形化界面。
    [root@server~]# gnome-system-monitor

  2. ps aux –sort -rss 查看用户进程所占内存、CPU百分比

User:该进程所属用户
PID: 该进程ID号
%CPU:该进程所占CPU资源百分比;
%MEM:该进程所占物理内存百分比;
VSZ:该进程所占虚拟内存量(Kbytes)
RSS:该进程所占固定的内存量(Kbytes)
TTY:该进程在哪个终端上面运行(?表示与终端无关、 tty1-tty6:本机上面的登陆者的进程、 pts/0 等表示通过网络登入主机的程序)
STAT:该进程状态(D 不可中断、R正在运行、 S 睡眠状态、 T停止状态、 Z 僵尸状态)
START:该进程被触发启动的时间;
TIME:该进程实际使用CPU运行的时间;
Command:该进程的世纪指令。

  1. ps -eo user,uid,pid,ppid,size,vsize,share,nice,priority,pmem,trs,rss,time,stat,cmd

user 用户名
uid 用户号
pid 进程号
ppid 父进程号
size 内存大小, Kbytes字节.
vsize 总虚拟内存大小, bytes字节(包含code+data+stack)
share 总共享页数
nice 进程优先级(缺省为0, 最大为-20)
priority(pri) 内核调度优先级
pmem 进程分享的物理内存数的百分比
trs 程序执行代码驻留大小
rss 进程使用的总物理内存数, Kbytes字节
time 进程执行起到现在总的CPU暂用时间
stat 进程状态
cmd(args) 执行命令的简单格式

  1. Memstat
    通过memstat查看给定进程相关的可执行文件、数据、共享库等。
    [root@server~]# memstat -p PID

  2. 内存释放
    Linux服务器运行一段时间后,由于其内存管理机制,会将暂时不用的内存转为buff/cache,这样在程序使用到这一部分数据时,能够很快的取出,从而提高系统的运行效率。
    所以乍一看内存剩余的非常少,但是在程序真正需要内存空间时,linux会将缓存让出给程序使用,这样达到对内存的最充分利用。
    所以真正剩余的内存是free+buff/cache .
    但是有些时候大量的缓存占据空间,这时候应用程序回去使用swap交换空间,从而使系统变慢,这时候需要手动去释放内存
    在正式生产环境下,我们不要频繁的去释放内存,只在必要时候清理内存就可。更重要的是我们应该从应用程序层面去优化内存的利用和释放。

    Linux下/proc目录下的数据和文件,都是内中中的实时数据,相应的关于内存的管理方式是在/proc/sys/vm/drop_caches文件中:

    该文件存放的不是具体的文件内容,而是0 – 3 这几个数字:
    0: 系统默认值,默认情况下表示不释放内存,由操作系统自动管理;
    1: 释放页缓存;
    2: 释放dentries和inodes;
    3: 释放所有缓存
    因此,分别将1 – 3 这3个数字重定向到drop_caches中就可以实现内存的释放,
    一般释放内存都是重定向3到文件中,释放所有的缓存;

释放内存步骤:
[root@server~]# sync #将所有正在内存中的缓冲区写到磁盘中;
[root@server~]# echo 3 > /proc/sys/vm/drop_caches #释放所有缓存

释放完后,可再通过 free -g 进行查看。
释放完后,再设置drop_caches值为0,重新让操作系统重新分配内存。

©著作权归作者所有:来自51CTO博客作者adong2838的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 内存卡连接时显示文件夹变0字节请问怎么才能修复
  2. 内存卡出现“分区变0字节”的解决办法
  3. Mac 版 Chrome 浏览器已支持 Tab Throttling 技术,后台页面内存占
  4. Linux系统内存使用率该怎么计算
  5. MongoDB Server对于Sort排序能够支持的最大内存限制查看
  6. 操作系统-进程的初步实现
  7. M1 版 MacBook SSD 为何会损耗巨大?
  8. 2021-03-12:go中,如何确定有没有内存泄露,系统里怎么去监控整体的运
  9. Nginx版本平滑升级

随机推荐

  1. android 画虚线、实线,画圆角矩形,一半圆角
  2. Android 侧滑菜单的实现
  3. Android NFC架构分析
  4. android EditText设置文字选中
  5. Android 获取状态栏的高度
  6. Android(安卓)Animation总结
  7. linux基础教程--安装Android SDK
  8. android之View属性
  9. cocos2d-x3.0beta版+NDK-r9b在android上
  10. android点击邮箱链接跳转发送