述
物理内存就是系统硬件提供的内存大小,是真正的内存。相对于物理内存,在Linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。
vmstat命令
一个查看虚拟内存(Virtual Memory Statistics)使用状况的工具。使用该命令可以对虚拟内存、进程、CPU活动进行监控。
vmstat
vmstat 3 2 //每3秒采集一次,共两次。
第一个参数是采样的时间间隔数(Interval),单位是秒,第二个参数是采样的次数(Count)。
符号 | 意义 |
---|---|
r | 表示运行队列。 |
b | 表示阻塞的进程 |
swpd | 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足。 |
buff | 用来存储要输出的数据大小。 |
free | 空闲的物理内存的大小。 |
cache | 用来存储要读入的数据大小。 |
si | 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用。 |
so | 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。 |
bi | 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte。 |
bo | 块设备每秒发送的块数量。 |
in | 每秒CPU的中断次数,包括时间中断。 |
cs | 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换。 |
us | 用户CPU时间。 |
sy | 系统CPU时间。 |
id | 空闲CPU时间。 |
wt | 等待IO CPU时间。 |
free命令
显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。
一般来说如果空闲内存/物理内存>70%,内存性能优;如果小于20%,则性能差,需要添加内存。
语法: free [-bkmotV][-s <间隔秒数>]
free -k -s 2 //b、k、m分别表示以Byte、KB、MB为单位显示内存使用情况,s表示间隔秒数。
第一行的输出是从操作系统(OS)来看的。第二行是从一个应用程序的角度看系统内存的使用情况。第三行为交换区的信息,总量(total),使用量(used)和有多少空闲的交换区(free)。
注:buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。
proc 文件
/proc/meminfo文件
这个文件给出了内存状态的信息。它显示出系统中空闲内存,已用物理内存和交换内存的总量。它还显示出内核使用的共享内存和缓冲区总量。这些信息的格式和free命令显示的结果类似。
内存分配及释放
void *malloc(size_t size)函数
该函数分配了size个字节的存储空间,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。
void free(void *ptr)函数
该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。
来源:CSDN
作者:喜心`
链接:https://blog.csdn.net/weixin_44931580/article/details/103604866