ubuntu中swap分区的内存管理小观察
来源:互联网 发布:单片机1602引脚图 编辑:程序博客网 时间:2024/04/30 18:32
今天刚刚听老师将了,linux里面内存管理方式。于是晚上便是心血来潮,想着试试看。我的电脑目前是4G的内存,我的交换分区设为1.3G。是64位系统。在正常运行的情况下。系统占有物理内存大概是700多兆的样子。我现在写了一个C语言的小程序。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
int main()
{
int i,j;
char *p=malloc(1024*1024*1024);
char *q=malloc(1024*1024*1024);
char *o=malloc(1024*1024*1024);
char *t=malloc(1024*1024*512);
for (i=0;i<1024*1024*1024;i++)
{
p[i]='\0';
q[i]='\0';
o[i]='\0';
if(i%(1024*1024)==0)
{
printf("%p\n",o+i);
printf("%p\n",p+i);
printf("%p\n",q+i);
}
}
for (j=0;j<1024*1024*768;j++)
{
t[j]='\0';
if(j%(1024*1024)==0)
printf("%p\n",t+j);
}
sleep(15);
free(o);
free(t);
free(q);
free(p);
return 0;
}
如果这个程序真正地运行起来的话,将会要占用3G768M的内存,显然在我程序运行的尾声,非正常退出了,在此间我不断的观察我的系统监视器,看着它慢慢地变卡,直到假死。同时显示内存使用量的那条线也是逐渐上升,直到顶部。而此时,交换分区的使用量也是明显上升。增加到700多兆的样子。然后程序停止。程序停止后,系统恢复不卡的状态。但是我明显发现,目前交换分区的使用内存量是400多兆。而实际物理内存的使用量是300兆不到。而且我打开文件特别卡。显示硬盘在不断的读取数据。
因此,我分析,原因是在我跑那个小程序的时候,因为要占用很多的内存,因此,会把原来我在实际物理内存中存的东西都放到交换分区。而小程序结束以后。我的那些正常使用的内存的数据还是在交换分区。并不是因为我实际物理内存有空闲了,系统会自动将交换分区的内容复制到实际内存中,而是当我在继续读取数据时候,再会从交换分区把数据读回到实际物理内存当中。因此在我的不断使用当中,我发现swap中的内存使用量渐渐减少,而实际物理内存的使用量正在逐渐增加。截止到现在为止,交换分区中的使用量已经减少到300兆不到,而实际物理内存使用量增加回到500多兆。
PS:是否增加某种机制,能够让系统自动判断物理内存是否有空的区域,并且在物理内存有空的区域的时候,将交换分区的内容自动还原到实际物理内存。
- ubuntu中swap分区的内存管理小观察
- ubuntu速度慢的原因之内存和swap分区
- Ubuntu 中创建SWAP交换分区文件
- linux-磁盘的管理与swap分区
- 给ubuntu的swap分区增加容量
- Ubuntu下调整swap分区的大小
- Ubuntu下调整swap分区的大小
- Ubuntu下调整swap分区的大小
- Ubuntu下新建SWAP分区的方法
- ubuntu增加swap交换分区的方法
- Ubuntu下调整swap分区的大小
- Ubuntu 修改交 swap 分区的大小
- Linux swap 分区管理
- swap分区管理浅谈
- 磁盘管理---------分区;swap
- 交换分区管理 Swap
- Ubuntu 扩大 swap 分区
- ubuntu增加swap分区
- java泛型详解
- 已知三角形三点坐标,求三角形的面积
- .NET程序中如何清除Excel的COM对象
- shell中的段落注释
- 垂直搜索引擎模块设计
- ubuntu中swap分区的内存管理小观察
- 【MFC BUG】error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
- fedora 14 samba server configuration
- VDSO
- Delphi 获取指定目录下文件的大小
- 数据结构算法2.2 链表的合并
- 字典
- malloc/free和new/delete的区别
- replace和replaceAll的区别