内存分为两种: 【虚存】和【实存】
程序员控制进程开辟的内存空间为 虚拟内存空间。
实际上,进程的物理内存空间只受操作系统控制。
通过top看到, 虚拟地址空间---VIRT
实际物理内存---RES
- 虚拟内存 和 实际物理内存之间,是通过内存映射建立关联关系
- 为了完成内存映射, 系统为每个进程维护了一个 【页表】,记录【虚拟地址】和【实际物理地址】的关系
- 管理的页表位于CPU的MMU上,由TLB(转换检测缓冲区)管理
内存缓存:
linux上缓存分为buffer,cache
buffer 是用于读写磁盘缓存, cache是用于读写文件缓存
磁盘和文件系统的区别:
磁盘是linux上的一个块设备,也是linux操作系统上一个大的块文件设备。
文件系统:文件系统依托于磁盘,即磁盘是文件系统的载体。
因为linux上一切皆文件,所以默认情况下,cache的缓存空间大于buffer
系统内存不够用怎么办?
1. 回收缓存【ps:正在用的缓存页不回收, 脏页数据写入到磁盘中后回收】。
2. 置换不常用的页空间到磁盘中【即swap发生作用,回收掉文件内存 or 匿名页】。
3. oom机制,杀死系统中占用内存大的进程。
为什么java应用系统一般建议关闭swap空间? 不关闭如何处理?
java应用由于jvm的GC会扫描所有堆内存空间进行回收。若swap将引用的堆置换到了磁盘中,则会降低GC速度,影响到系统性能
如果不关闭swap空间,可以将swap发生的权重设置swapness=0,再将swap发生时的内存空间设置大。
原文地址:https://www.cnblogs.com/climbMonkey/p/11563932.html
时间: 2024-10-23 16:21:36