博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux之 手动释放内存
阅读量:6639 次
发布时间:2019-06-25

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

我们在进程中要怎样去描述一个文件呢?我们用目录项(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

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

你可能感兴趣的文章
(转)CWnd与HWND的区别与转换
查看>>
豆瓣有无验证码登陆+selenium
查看>>
android:sharedUserId
查看>>
简单的Windows 服务的安装和卸载
查看>>
IOS开发——正则表达式验证手机号、密码
查看>>
VC++ 内存机理的个人理解(一)——地址和指针的关系
查看>>
QT+VS
查看>>
SQL2008安装详细教程
查看>>
获得驱动器信息卷设备&&Ring3得到磁盘文件系统(NTFS WIN10)
查看>>
js 事件点击 显示 隐藏
查看>>
java基础:4.2 对象和类(二)、数据域封装、this
查看>>
1118 实验三 有限自动机的构造与识别
查看>>
Ubuntu16.04使用Tarball安装ntp
查看>>
构造器及this的用法
查看>>
CF Educational Codeforces Round 21
查看>>
入职三天,公司给了100块钱叫我走人
查看>>
获取并打印Spring容器中所有的Bean名称
查看>>
面向对象多态及其继承
查看>>
java中jvm的工作原理
查看>>
centos7下环境配置
查看>>