博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 被Cache的内存真的可用吗?
阅读量:3526 次
发布时间:2019-05-20

本文共 520 字,大约阅读时间需要 1 分钟。

平常当我们使用free 查看内存使用的情况,看到cache占比很大,一般都认为cache的都是可被系统使用的。事实上,cache的部分内存是不会被自动释放的。

以下所列是Linux系统内存cache的几种不会被释放的情况。

  1. 当cache作为文件缓存被释放的时候会引发IO变高,这是cache加快文件访问速度所要付出的成本。

  2. tmpfs(Linux提供一种“临时”文件系统)中存储的文件会占用cache空间,除非文件删除否则这个cache不会被自动释放。 

  3. 使用shmget方式申请的共享内存会占用cache空间,除非共享内存被ipcrm或者shmdt,否则相关的cache空间都不会被自动释放。

  4. 使用mmap(将一个文件映射进进程的虚拟内存地址,之后就可以通过操作内存的方式对文件的内容进行操作)方法申请的MAP_SHARED标志的内存会占用cache空间,除非进程将这段内存munmap,否则相关的cache空间都不会被自动释放。

  5. 实际上shmget、mmap的共享内存,在内核层都是通过tmpfs实现的,tmpfs实现的存储用的都是cache。

内存的使用是一件很复杂的事情,cache是不能当做空闲空间使用的,深究内存之道,任重而道远。

转载地址:http://kkeqj.baihongyu.com/

你可能感兴趣的文章
java的多态现象
查看>>
java中对象的类型转换
查看>>
java基础入门 String
查看>>
Java基础入门 StringBuffer类
查看>>
Java基础入门 currentTimeMillis方法
查看>>
Java基础入门 arraycopy方法
查看>>
Java基础入门 Math类
查看>>
Java基础入门 Random类
查看>>
Java基础入门 Date类
查看>>
Java基础入门 Calendar类
查看>>
Java基础入门 DateFormat类
查看>>
Java基础入门 Window类及Panel类
查看>>
Java基础入门 AWT事件处理
查看>>
Java基础入门 鼠标事件
查看>>
Java基础入门 键盘事件
查看>>
Java基础入门 GridLayout
查看>>
JavaEE Bean的两种常用作用域 singleton(单例)和prototype(原型)
查看>>
MySQL 数据库索引
查看>>
JavaEE Spring与MyBatis的整合之传统DAO方式整合(教材学习笔记)
查看>>
JavaEE MyBatis与Spring的整合——基于mapper接口方式开发(教材学习笔记)
查看>>