[JVM]关于swap的理解

关于swap的理解

概念

swap就是内存交换的意思。

计算机内存分为物理内存和虚拟内存。物理内存就是计算机实际内存的大小;虚拟内存是磁盘空间里开辟出一部分,是虚拟出来的内存空间,所以也叫磁盘缓存。

虚拟内存使得计算机在内存不够的情况可以得到部分解决。

程序运行的时候会在虚拟内存与物理内存之间进行替换和加载。这里的虚拟内存就是swap

进程在运行的时候系统会判断当前的物理内存是否还有空闲,如果有则直接调用内存运行;如果没有则会根据优先级选择一个进程挂起,把该进程交换到swap中等待,然后把新的进程调入到内存中运行。

进程向系统请求内存发现不足时,系统会把内存中暂时不用的数据交换出去,放在swap分区里,这个过程是swap out(so);当进程又需要这些数据且系统发现还有空闲的物理内存,又会把swap分区中的数据交换到物理内存,这个过程是swap in(si)

swap使用完,操作系统会触发OOM-Killer机制,杀掉占用内存最大的进程。所以大家经常会发现内存飚高之后,进程莫名其妙就不见了。

JVM和swap的关系

  • 系统内存足够,JVM内存未使用到``swap内存,但是JVM内存不够了,最终会导致频繁的Full GCFull GC的时间相对比较久,会导致线程的长期暂停。
  • 系统内存不够,JVM内存占用到了部分的swap,此时GC需要把swap区的内存交换到系统物理内存中再进行JVM的垃圾回收工作,这会导致每次的GC时间变久。
  • 系统内存不够,大量的JVM堆内存被交换到swap,垃圾回收时把swap内存交换到物理内存,但是swap内存又不会立即交换回来,此时swap使用的内存占用会变大,就可能导致 OOM-Killer
posted @   knqiufan  阅读(280)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示
今天是妇女节