首页 > 其他分享 >[JVM]关于swap的理解

[JVM]关于swap的理解

时间:2023-10-09 18:45:40浏览次数:41  
标签:内存 理解 swap JVM 进程 虚拟内存 物理

关于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

标签:内存,理解,swap,JVM,进程,虚拟内存,物理
From: https://www.cnblogs.com/knqiufan/p/17752864.html

相关文章

  • 节能减排 | AIRIOT智慧工厂节能管理解决方案
    工厂作为高能耗的生产型企业,降低能耗和提升资源利用率方面就显得很重要,对实施国家倡导的节能降耗、绿色发展有着很大程度上的必要性。然而,工厂能源管理从传统手段向智能化升级转型的过程中,企业也不可避免的面临一些痛点和挑战:节能目标完成难度大:随着产量上升,企业能源综合消耗量增加......
  • 学习笔记420—【译】理解LSTM(通俗易懂版)
    【译】理解LSTM(通俗易懂版)循环神经网络(RecurrentNeuralNetworks)人对一个问题的思考不会完全从头开始。比如你在阅读本片文章的时,你会根据之前理解过的信息来理解下面看到的文字。在理解当前文字的时候,你并不会忘记之前看过的文字,从头思考当前文字的含义。传统的神经网络并......
  • schema理解
    在数据科学和数据分析中,一个DataFrame是一个表格型的数据结构,通常用于存储二维数据,类似于关系型数据库或Excel表格。而Schema是DataFrame中的一部分,它定义了DataFrame中各列的数据类型和名称。Schema告诉你每一列中包含什么类型的数据,这对于数据分析和数据处理非常重要。在不同的......
  • 左值右值简单理解
    ++i=100;可被g++编译,但是不可被gcc编译;i++=100;不可被g++或gcc编译;左值在内存中具有真实空间,可被覆写。右值可能存在,可能不存在真实空间,不可被人为覆写。inti=0;i=i++;==>i为0;i=++i;==>i为1; ......
  • 关于折半查找的某个例题的理解
    1-习题展示2-习题解决我们都知道折半查找就是比较中间的数,然后决定查找左边还是右边。那么,对于这个题,我们只需要将序列按照二叉排序树的条件画出来,就会发现,B选项有分叉出现,不是左拐右拐的那种分叉。答案就出来啦~......
  • 数据结构的关键码序列的理解概述
    1、关键码序列的理解所谓关键码序列,就是出现在二叉排序树中的,对二叉排序树的各个结点进行排序的一个结点序列。依据左子树的各个结点的值都小于父结点的值,右子树的各个结点的值都大于父结点的值的条件进行排序。2、习题解决一般都是给我们一个二叉排序树的图,让我们去判断选......
  • JVM-1
    JVM-1你是否也遇到过这些问题?运行着的线上系统突然卡死,系统无法访问,甚至直接oOM!想解决线上JVMGC问题,但却无从下手。新项目上线,对各种JVM参数设置一脸茫然,直接默认吧,然后就JJ了每次面试之前都要重新背一遍JVM的一些原理概念性的东西,然而面试官却经常问你在实际项目中如......
  • JVM性能调优总结
    #tomcat的jvm优化生产案例:[root@centos8~]#vim/usr/local/tomcat/bin/catalina.shJAVA_OPTS="-server-Xms4g-Xmx4g-Xss512k-Xmn1g-XX:CMSInitiatingOccupancyFraction=65-XX:+AggressiveOpts-XX:+UseBiasedLocking-XX:+DisableExplicitGC-XX:MaxTenuringThreshol......
  • 关于训练集、验证集、测试集的理解
    我们在一般深度学习的实验中,经常使用到的是训练集和测试集。训练集自不必说,是用来训练网络参数的,如网络权重W,b。要进行区分的是验证集和测试集。验证集的作用是用来调整超参数,如网络层数、学习率等等。而测试集是用来测试你所训练的网络(包括网络参数和超参数)的效果。之所以不能用......
  • [总结] 高等数学的一些理解
    ......