首先介绍一下linux中内存是如何使用的。

当有应用需要读写磁盘数据时,由系统把相关数据从磁盘读取到内存,如果物理内存不够,则把内存中的部分数据导入到磁盘,从而把磁盘的部分空间当作虚拟内存

来使用,也称为Swap。如果给所有应用分配足够内存后,物理内存还有剩余,linux会尽量再利用这些空闲内存,以提高整体I/O效率,其方法是把这部

分剩余内存再划分为cache及buffer两部分加以利用。

从磁盘读取到内存的数据在被相关应用程序读取后,如果有剩余内存,则这部分数据会存入cache,以备第2次读取时,避免重新读取磁盘。当一个应用程序在

内存中修改过数据后,因为写入磁盘速度相对较低,在有空闲内存的情况下,这些数据先存入buffer,在以后某个时间再写入磁盘,从而应用程序可以继续后

面的操作,而不必等待这些数据写入磁盘的操作完成。

如果在某个时刻,系统需要更多的内存,则会把cache部分擦除,并把buffer中的内容写入磁盘,从而把这两部分内存释放给系统使用,这样再次读取cache中的内容时,就需要重新从磁盘读取了。

通过以上分析可以得知,空闲物理内存不多,不一定表示系统运行状态很差,因为内存的cache及buffer部分可以随时被重用,在某种意义上,这两部分内存也可以看作诗额外的空闲内存。swap如果被频繁调用,bi,bo长时间不为0,则才是内存资源是否紧张的依据。

阅读(1918) | 评论(0) | 转发(2) |

linux 内存使用原理,linux中内存使用原理相关推荐

  1. c语言围棋原理,围棋中的数学原理

    围棋是我国传统"四艺"之一,文献所载可以追溯到春秋战国时期.如今,围棋已经变成国际通行的棋种.可是你知道吗,围棋不仅是我国的文化遗产,其中还隐藏着很多有趣的数学小知识. (1)&q ...

  2. java condition原理_java中Condition接口原理及实现

    Condition是在java 1.5中才出现的,它用来替代传统的Object的wait().notify()实现线程间的协作,相比Object的wait().notify(),使用Condition ...

  3. linux malloc命令,减少 curl 中内存分配操作(malloc)

    今天我在 libcurl 内部又做了一个小改动,使其做更少的 malloc.这一次,泛型链表函数被转换成更少的 malloc (这才是链表函数应有的方式,真的). 研究 malloc 几周前我开始研究 ...

  4. java list原理_Java中ArrayList实现原理

    前言 这个分类中,将会写写Java中的集合.集合是Java中非常重要而且基础的内容,因为任何数据必不可少的就是该数据是如何存储的,集合的作用就是以一定的方式组织.存储数据.这里写的集合,一部分是比较常 ...

  5. histeq matlab原理,MATLAB中histeq的原理以及自写的具体实现函数

    1.什么是直方图? 直方图是数字图像处理中一个简单而重要的常用工具,它从总体上刻画了一幅图像的灰度内容. 具体来说,直方图描述的是图像中具有各灰度级的出现的概率(像素的个数),其横坐标为灰度级,纵坐标 ...

  6. Java中内存溢出和内存泄露详解

    1.内存溢出(OOM) 在程序中导致程序崩溃的两种原因有: ①.空指针.下标越界等异常,这类问题主要原因是因为代码写的有问题 ②.还有一类问题是,代码看着也没有问题,在进行GC时,回收也没有空出足够的 ...

  7. java内存设置最大内存_JVM中内存的设置和分配(最大内存,总内存,剩余内存的区别)...

    1.设置分配的内存大小 -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M -vmargs 说明后面是VM的参数,所以后面的 ...

  8. js内存泄露 垃圾回收_Java内存体系结构(模型),垃圾回收和内存泄漏

    js内存泄露 垃圾回收 Java内存架构(Java内存模型) 上面是堆的Java内存模型以及Java虚拟机(JVM)中运行的任何Java应用程序的PermGen. 还提供了比率,以使您更好地了解如何在 ...

  9. 处理导入的原理图库中Designator字体不对的问题

    文章目录 前言 一.在原理图库中修改 总结 前言 AD在导入第三方原理图库的时候,有时候会遇到Designator字段的字体或者颜色不对的问题,像下面一样. 这时候可以在原理图中改,但是如何在原理图库 ...

最新文章

  1. yum使用、单用户模式、救援模式
  2. 【转】心目中的编程高手
  3. 安装Apache的步骤
  4. 『设计模式』电话接线员与中介者模式
  5. 安装 Alibaba Cloud Toolkit
  6. 逻辑回归和线性回归区别
  7. iOS锁屏代码注意使用新接口
  8. Windows AD域管理软件详解
  9. Java、JSP网吧自动计费收费管理系统
  10. 人口普查数据有疑问???
  11. printf 输出对齐
  12. 百度杯”CTF比赛(十二月场)
  13. 字符串处理工具类,主要是针对内容txt对标点符号进行处理-java处理字符串符号工具类实现逻辑
  14. 【BZOJ2037】Sue的小球(动态规划)
  15. 按键精灵实现验证码识别
  16. android studio signingconfigs 打正式包,android signingConfigs打包配置
  17. 英飞凌 AURIX TC3XX 系列单片机的链接文件
  18. k8s和docker区别
  19. Joint Coronary Centerline Extraction and Lumen Segmentation from CCTA CNNTracker and Vascular Grap
  20. Jenkins的简单使用,小白式教程

热门文章

  1. 设置 Linux 的 LD_LIBRARY_PATH 变量
  2. axis2 wsdl2java 使用方式
  3. shell 删除七日内日志_shell日志删除(超容量自动)
  4. Shell else if mysql_Shell if else语句(详解版)
  5. 向量表示 运动抛物线_ALevel物理知识点详解:抛物线运动
  6. eslint php,ESlint操作步骤详解
  7. 转子碰磨 matlab,航空科普:什么是航空发动机转子碰磨?
  8. css的再深入9(更新中···)
  9. 深入理解JavaScript之Event Loop
  10. vue菜鸟从业记:完成项目最后一公里之真机测试和打包上线