一些重新开始面试之后的八股文汇总

本文详细解释了Linux系统中的内存概念,包括机器内存的缓冲/存数区、进程内存的虚存(VIRT)、实存(RES)和共享内存(SHR),以及如何通过`free`和`vmstat`命令监控内存使用。特别强调了虚存和实存的增长差异以及内存空间的动态调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、内存中各项名词说明

1、机器内存概念说明

linux中的free命令可以查看机器的内存使用情况,vmstat命令也可以

其中不容易被理解的是:

  • 内存缓冲/存数(buffer/cached)
1.buffers和cache也是RAM划分出来的一部分地址空间
2.buffers和cache的地址空间也可作为空闲内存的组成部分,这意味着我们可以通过向内核传参释放一部分内存给其他进程
3.由于buffers/cache 是一种动态的内存地址空间,所以已用空间和空余空间有绝对使用,绝对空余空间,算上buffers/cache的相对已用空间和相对空余空间四个概念。

机器实际可用的内存=free + buffers + cached

2、进程内存概念说明

  • 虚存(VIRT):
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间等;
2、假如进程新申请10MB的内存,但实际只使用了1MB,那么它会增长10MB,而不是实际的1MB使用量。
3、VIRT = SWAP + RES

实存(RES):

1、进程当前使用的内存大小,包括使用中的malloc、new分配的堆空间和分配的栈空间,但不包括swap out量;
2、包含其他进程的共享;
3、如果申请10MB的内存,实际使用1MB,它只增长1MB,与VIRT相反;
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小。
5、RES = CODE + DATA

共享内存(SHR):

1、除了自身进程的共享内存,也包括其他进程的共享内存;
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小;
3、计算某个进程所占的物理内存大小公式:RES – SHR;
4、swap out后,它将会降下来。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值