每日一问10 虚拟内存

2021-01-05 10:20:05 浏览数 (2)

  • 什么是虚拟内存?

虚拟内存是对内存抽象,在逻辑上让进程认为拥有一片连续完 虚拟地址空间,在通过虚拟地址访问时候,物理内存被认为磁盘的一个缓存,用来储活跃页数据,如果不存在 缺页中断从磁盘(swap文件)加载一页vm页进行替换物理内存一页。

  • 进程的虚拟内存如何管理的

主要有堆 栈 栈是 函数调用/协程切换必须空间,在创建线程时候中需要提前分配 堆申请mmap和brk2个方式,后者出现内存碎片

  • 内存分配三个状态

我们可以写一个程序,来创建很多个线程,然后观察内存占用,在我的笔记本上,创建10000个线程后,通过htop命令我观察到,virtual memory使用了80G,resident memory试用了240M,这两个指标的区别在哪呢?我的笔记本内存只有8G,虚拟内存为什么能用出80G呢?

遗留问题:

当内存不够时候,出现ooM,这是时候不是swap交互吗?

之间什么关系,

0 人点赞