Linux性能之内存篇

  内存分为两种: 【虚存】和【实存】

  程序员控制进程开辟的内存空间为 虚拟内存空间。

  实际上,进程的物理内存空间只受操作系统控制。

  通过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发生时的内存空间设置大。

猜你喜欢

转载自www.cnblogs.com/climbMonkey/p/11563932.html
今日推荐