1.查看内存占用情况

$ free -m -h
total used free shared buff/cache available
Mem: .7G .0G .9G 385M 780M .0G
Swap: .4G .0G .4G

2.释放物理内存

(1) 释放内存前先使用sync命令做同步,以确保文件系统的完整性,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。否则在释放缓存的过程中,可能会丢失未保存的文件。

$ sync

(2) 然后通过修改proc系统的drop_caches清理free的cache

$ echo  > /proc/sys/vm/drop_caches

(3) 释放完内存后改回去让系统重新自动分配内存

$ echo  > /proc/sys/vm/drop_caches

可能会遇到了 "bash: /proc/sys/vm/drop_caches: Permission denied"的问题,即使加上sudo也不行.

原因:重定向符号 “>” 和 ">>" 也是 bash 的命令。使用 sudo 只是让 echo 命令具有了 root 权限,但是没有让 “>” 和 ">>" 命令也具有 root 权限,所以 bash 会认为这两个命令都没有向 drop_caches 文件写入信息的权限。

解决方法:

方法一是利用 "sh -c" 命令,它可以让 bash 将一个字串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。具体用法如下:

$ sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'

方法二是利用管道和 tee 命令,该命令可以从标准输入中读入信息并将其写入标准输出或文件中,具体用法如下:

$ echo  | sudo tee -a /proc/sys/vm/drop_caches

注意,tee 命令的 "-a" 选项的作用等同于 ">>" 命令,如果去除该选项,那么 tee 命令的作用就等同于 ">" 命令。

参考:https://zhidao.baidu.com/question/1111512531871775459.html

3.释放虚拟内存

(1) 关停swap分区(释放虚拟内存):

$ sudo swapoff -a

注意:要保证物理内存剩余量要大于等于swap使用量,否则不能成功释放虚拟内存.(根据内存机制,swap分区一旦释放,所有存放在swap分区的文件都会转存到物理内存上)例如:

$ sudo swapoff -a
swapoff: /dev/sdb8: swapoff failed: Cannot allocate memory

如果成功关停swap分区,可以看到Swap这一行的状态显示全0:

$ free -m -h
total used free shared buff/cache available
Mem: .7G .7G .9G 732M .1G .9G
Swap: 0B 0B 0B

(2) 再开启swap分区:

$ sudo swapon -a

这时可以看到swap分区free==total,used=0

$ free -m -h
total used free shared buff/cache available
Mem: .7G .7G .8G 740M .1G .9G
Swap: .4G 0B .4G

Linux 释放物理内存和虚拟内存的更多相关文章

  1. linux物理内存与虚拟内存

    http://www.360doc.com/content/14/0123/14/14450281_347336709.shtml 1.查看内存占用情况 $ free -m -h total used ...

  2. Linux 释放cache化缓存

    Linux 释放cache化缓存 free -g查看空余内存以及已使用内存 原文  https://blog.csdn.net/tomspcc/article/details/78131468 机械硬 ...

  3. Linux查看物理内存信息

    Linux查看物理内存信息 1. 查看内存大小 dmidecode|grep Size 输出 Runtime Size: 64 kB ROM Size: 4608 kB Installed Size: ...

  4. 如何为linux释放内存和缓存

    如何为linux释放内存和缓存_华陌飞尘_新浪博客 如何为linux释放内存和缓存    (2011-10-20 10:49:01)        标签:    linux    swap    me ...

  5. linux下如何获取某一进程占用的物理内存和虚拟内存

    首先,ps -A查看你所查看进程的进程号 ps -A 加入进程号为pid 那么使用如下脚本,可以打印该进程使用的虚拟内存和物理内存: root@Storage:/mnt/mtd# cat rss.sh ...

  6. UNIX环境高级编程——Linux进程地址空间和虚拟内存

    一.虚拟内存 分段机制:即分成代码段,数据段,堆栈段.每个内存段都与一个特权级相关联,即0~3,0具有最高特权级(内核),3则是最低特权级(用户),每当程序试图访问(权限又分为可读.可写和可执行)一个 ...

  7. Linux进程地址空间和虚拟内存

    一.虚拟内存 先来看一张图(来自<Linux内核完全剖析>),如下: 分段机制:即分成代码段,数据段,堆栈段.每个内存段都与一个特权级相关联,即0~3,0具有最高特权级(内核),3则是最低 ...

  8. tmpfs——Linux的一种虚拟内存文件系统

    虚拟内核文件系统(VirtualKernel File Systems),是指那些是由内核产生但不存在于硬盘上(存在于内存中)的文件系统.例如 1.proc proc文件系统为操作系统本身和应用程序之 ...

  9. Linux vmstat:报告虚拟内存统计的工具

    众所周知,计算机必须有称之为RAM(随机访问内存)的存储器使得计算机工作.RAM指的是插在计算机主板上的物理存储.这里的RAM被用于加载像浏览器.文字处理器这类的程序,实际上,你使用的程序都运行在内存 ...

随机推荐

  1. Hive压缩格式

    TextFile Hive数据表的默认格式,存储方式:行存储. 可使用Gzip,Bzip2等压缩算法压缩,压缩后的文件不支持split 但在反序列化过程中,必须逐个字符判断是不是分隔符和行结束符,因此 ...

  2. Sqoop相关

    # sqoop安装 1. 常规步骤(安装在一台节点上即可) 由于sqoop2配置相对比较麻烦,此次使用的是sqoop1进行演示. 上传sqoop-1.4.4.bin_hadoop-2.0.4-alph ...

  3. Eye Protection FAQ

    Q: Why does smart protection not work? A: Please make sure the checkbox "Eye Protection" i ...

  4. POJ-1458 LCS(线性动态规划)

    此题经典线性动态规划. 代码如下: #include<iostream> #include<cstdio> #include<cstdlib> #include&l ...

  5. mybatis动态sql中的sql标签——抽取可重用的sql片段

    1.用<sql>标签抽取可重用的sql片段 <!-- 抽取可重用的SQL片段,方便后面引用           1.sql抽取,经常将要查询的列名,或者插入用的列名,之后方便引用   ...

  6. CDN方式使用iview

    如果没有使用webpack,可以使用我们提供的工具iview-theme来编译 首先需要安装主体生成工具,从npm全局活在项目中局部安装 以全局安装为例: npm install iview-them ...

  7. 【转发】Linux中设置服务自启动的三种方式

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/e ...

  8. Angular2-使用Augury来调试Angular2程序

    参考: http://www.jianshu.com/p/efecaea287f2https://augury.angular.io/ https://augury.angular.io/pages/ ...

  9. Hive 表结构操作

    添加列  add columns alter table table_name add columns (id int comment '主键ID' ) ; 默认在表所有字段之后,分区字段之前. 替换 ...

  10. 【Demo】jQuery 可编辑表格

    功能实现: (1)设定单元格的单击事件,判定被单击单元格是否已经是可编辑状态: (2)取出单元格原有内容,想单元格中加入文本框,并把原有内容显示在文本框中: (3)当用户编辑完成或者取消编辑后,将文本 ...