memory-recycle_冲突文件_zkx_20240828215908
主要有两类内存可以被回收
文件页(File-backed Page): 回收干净页的方式是直接释放内存,回收脏页的方式是先写回磁盘后再释放内存。
匿名页(Anonymous Page): 通过 Linux 的 Swap 机制,Swap 会把不常访问的内存先写到磁盘中,然后释放这些内存,给其他更需要的进程使用
文件页和匿名页的回收都是基于 LRU 算法,也就是优先回收不常访问的内存
维护着 active 和 inactive 两个双向链表
通常分别位于物理内存和虚拟内存
在 4GB 物理内存的机器上,申请 8G 内存
64 位可以申请多大的内存都没问题
使用的时候, 当页表没有对应的页时
会触发缺页中断, 置换不常用内存到虚拟内存
在 32 位操作系统,因为进程理论上最大能申请 3 GB 大小的虚拟内存,所以直接申请 8G 内存,会申请失败。
在 64位 位操作系统,因为进程理论上最大能申请 128 TB 大小的虚拟内存,即使物理内存只有 4GB,申请 8G 内存也是没问题,因为申请的内存是虚拟内存。如果这块虚拟内存被访问了,要看系统有没有 Swap 分区:
如果没有 Swap 分区,因为物理空间不够,进程会被操作系统杀掉,原因是 OOM(内存溢出);
如果有 Swap 分区,即使物理内存只有 4GB,程序也能正常使用 8GB 的内存,进程可以正常运行;
最后更新于