我们在进程中要怎样去描述一个文件呢?我们用目录项(dentry)和索引节点(inode)。它们的定义如下:

所谓"文件", 就是按一定的形式存储在介质上的信息,所以一个文件其实包含了两方面的信息,一是存储的数据本身,二是有关该文件的组织和管理的信息。在内存中, 每个文件都有一个dentry(目录项)和inode(索引节点)结构。

dentry记录着文件名,上级目录等信息,正是它形成了我们所看到的树状结构;而有关该文件的组织和管理的信息主要存放inode里面,它记录着文件在存储介质上的位置与分布。同时dentry->d_inode指向相应的inode结构。dentry与inode是多对一的关系,因为有可能一个文件有好几个文件名(硬链接, hard link)

inode代表的是物理意义上的文件,通过inode可以得到一个数组,这个数组记录了文件内容的位置,如该文件位于硬盘的第3,8,10块,那么这个数组的内容就是3,8,10。其索引节点号inode->i_ino,在同一个文件系统中是唯一的,内核只要根据i_ino,就可以计算出它对应的inode在介质上的位置。就硬盘来说,根据i_ino就可以计算出它对应的inode属于哪个块(block),从而找到相应的inode结构。但仅仅用inode还是无法描述出所有的文件系统,对于某一种特定的文件系统而言,比如ext3,在内存中用ext3_inode_info描述。他是一个包含inode的"容器"。

几种drop_caches的模式:

To free pagecache:
* echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
* echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:
* echo 3 > /proc/sys/vm/drop_caches
As this is a non-destructive operation, and dirty objects are notfreeable, the user should run "sync" first in order to make sure allcached objects are freed.
This tunable was added in 2.6.16.

注意:禁止生产上使用 2 、3 模式

手动清理cache(防止使用swap):
[root@testserver ~]# free -m
[root@testserver ~]# sync #强制将改变的内容立刻写入磁盘,更新超块信息
[root@testserver ~]# cat /proc/sys/vm/drop_caches
0
[root@testserver ~]# echo 1 > /proc/sys/vm/drop_caches
[root@testserver ~]# free -m

补充:大页内存可以避免使用swap

转载于:https://www.cnblogs.com/andy6/p/7489829.html

Linux之 手动释放内存相关推荐

  1. linux如何手动释放内存吗,Linux如何手动清理内存中cache信息

    当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.那么Linux如何手动清理内存中cache信息?下面跟着学习啦小编一起来了解一下吧. ...

  2. linux手动释放内存的方法

    Linux手动释放缓存的方法 Linux释放内存的命令: sync echo 1 > /proc/sys/vm/drop_caches drop_caches的值可以是0-3之间的数字,代表不同 ...

  3. linux 手动释放内存

    当在Linux下 频繁存取文件 或者 程序测试频繁崩溃后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching 因此我们很有必要手动清理系统缓存释放内存. 我们在清理缓存 ...

  4. 如何手动释放linux内存的方法,centos手动释放内存的方法

    CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本.每个版本的 CentOS都会获得十年的支持(通过安全更新方式).接下来是小编为大家收集的cento ...

  5. CentOS x86_64系统手动释放内存

    转载:https://blog.51cto.com/yuhongchun/1430026 线上集群后端某台Web服务器例行检查时,我观察到+buffers/cache值(即Linux内存的实际使用情况 ...

  6. Java手动释放内存

    托管的资源不需要开发者理会,垃圾回收器会自动回收,而非托管资源则需要开发者手动回收. 为什么呢,因为有些资源如数据库连接,io等等不仅仅包含对象所占内存,还包含一些物理资源(具体什么叫物理资源,还请知 ...

  7. python 手动释放内存_Python手动清理内存

    写程序这方面,自己不是科班出身,本科时唯一的C语言课也没有好好听讲.导致后来写代码的时候十分不规范,也缺失了许多细节,日常遇到的自己给自己挖的坑还是有必要记录一下,方便以后复盘. 就像现在,前脚写完的 ...

  8. JNI内存方面说明以及相关类型手动释放内存

    JNI内存方面说明以及相关类型手动释放内存 一.Java内存 二.JNI内存和引用 三.Local Reference 四.Global Reference 五.Weak Global Referen ...

  9. Linux下如何释放内存

    在Linux系统下,我们一般不需要去释放内存,因为系统已经将内存管理的很好.但是凡事也有例外,有的时候内存会被缓存占用掉,导致系统使用SWAP空间影响性能,此时就需要执行释放内存(清理缓存)的操作了. ...

最新文章

  1. 【C 语言】数组作为参数退化为指针问题 ( 问题描述 | 从编译器角度分析该问题 | 出于提高 C 语言执行效率角度考虑 | 数组作为参数的推荐方案 )
  2. windows版本jenkins部署django项目
  3. 工作两个月的感受随笔
  4. JEECG 移动端解决方案
  5. 【Openstack】【Nova】开发者入门,开发工作流
  6. 图层上下_「只要功夫深 不用关键帧」之图层序号的玩法
  7. 基于S函数的BP神经网络PID控制器及simulink仿真
  8. 【100题】第十八题(约瑟夫循环)
  9. matlab朴素贝叶斯手写数字识别_「深度学习系列」PaddlePaddle之手写数字识别
  10. 电子与智能化工程专业承包资质标准
  11. 成语接龙 你看过这么拽的吗?
  12. app界面设计规范及缺陷
  13. 青春岁月杂志青春岁月杂志社青春岁月编辑部2022年第11期目录
  14. autolabor开源ros机器人笔记
  15. 10大全球设计师SNS社区网站
  16. 我敢说,没人能超过这份产品经理推荐书单(40本)!
  17. 关于入户广州的政策条件?大学生毕业后如何正确处理档案户口的事项?
  18. 【Python】修行路
  19. Marvell交换芯片88E6390驱动开发
  20. python自动修图_3 行 Python 代码 5 秒抠图的 AI 神器,根本无需 PS

热门文章

  1. ArrayList的内存泄露
  2. P2P最易遭受的DDoS***以及防御手段
  3. “雾霾”天里坐看云起时-【软件和信息服务】2014.01
  4. Mac中将delete键定义为删除键
  5. 自己架设windows升级服务器
  6. 01-HTML基础与进阶-day6-录像281
  7. [Big Data - Kafka] kafka学习笔记:知识点整理
  8. 中小企业对于云计算的3大误解
  9. 使用netty模仿dubbo服务
  10. 手动新增swap分区