虚拟内存地址:
出现的原因:单片机时代,cpu直接操作物理内存,每次只能有一个进程操作,如果多个
在 4GB 物理内存的机器上,申请 8G 内存会怎么样?
1、明确是32位机器,还是64位机器
-
32位:32位机器的虚拟内存地址的分配是1G的内核空间,3G的用户空间,4G>3G,分配就直接失败
-
64位:64位机器的虚拟内存地址的分配是128T的内核空间,128T的用户空间,还有未定义的内存空间,
128T>4G,可以分配成功
2、申请完8G的内存后会不会被使用?
因为只分配虚拟内存但并未对虚拟内存进行读写,操作系统是不会去分配物理内存的
3、明确有没有swap机制:
使用cat /proc/sys/vm/overcommit_memory
来查看swap的参数:
swap有3种:
默认值为0:代表过于名目张胆的申请过大的内存,会被操作系统直接拒绝
默认为1:代表对内存来着不拒(要想不被拒绝,我们默认为1)
默认为2:也是禁止过大