简介
内存主要用来存储系统和应用程序的指令、数据、缓存等
1.内核给每个进程提供一个独立的虚拟地址空间,并且这个地址空间是连续的
2.虚拟地址空间内部分成了内核空间和用户空间
3.32位系统的内核空间专用1G,位于最高处,剩余的3G都是用户空间
64位的内核空间和用户空间都是128T,分别占整个内存空间的最高和最低处
4.进程在用户态时,只能访问用户空间内存
只有进入到内核态后,才能访问内核空间内存
5.只有实际使用的虚拟内存才会被分配物理内存,通过内存映射来管理。内存映射就是将虚拟内存地址映射到物理内存地址。 为了完成内核映射,内核为每个进程都提供了一张表,用于记录虚拟地址和物理地址的映射关系
虚拟内存空间分布
从低到高 五种不同的内存段
只读段:包括代码和常量
数据段:包括全局变量
堆:包括动态分配的内存,从低地址开始向上增长
文件映射段:包括动态库、共享内存,从高地址开始向下增长
栈:包括局部变量和函数调用的上下文等,一般是8M
free
查看内存使用情况选项:
-k :以kb为单位显示,默认就是kb
-b:以字节为单位显示
-m:以MB为单位显示
-g:以GB为单位显示
[root@tenor ~]# freetotal used free shared buff/cache availableMem: 3880404 109808 2969036 732 801560 3523540Swap: 0 0 0
第一行
total:总内存数
used:已经使用的内存数
free:空闲的内存数
shared:多个进程共享的内存总数
buff/cache:缓冲内存数/缓存内存数
available:可用的内存数
第二行
total:swap的总数
used:已经使用的swap数
free:空闲的swap数
