• jvm-GC集合篇一之GC垃圾回收器以及GC回收工作条件


    1:到目前为止,有10中垃圾回收器

    图一

    在讲解这些垃圾回收器前,我们先回顾一下这张图(虚拟机总内存模型图)

                                                                            图二

    GC是发生在运行时数据区--堆,方法区(元空间)

    我们一起看看堆的内存结构:包括两个大的内存:年轻代,老年代。而年轻代分为伊甸园区,幸存区(有的叫法是存活区)

    年轻代内存占堆内存:1/3。而伊甸园占年轻代的8/10,幸存区S0,S1占幸存区总的内存:1/10,1/10

    老年代内存占堆内存:2/3

    图三

    下面描述产生GC过程:minor GC、Full GC都会产生事件:STW(stop the word),即用户请求的线程会卡顿(停止,所以为什么一些网站会卡顿,可能这个原因

     

     

     

    1:当new一个对象的时候,这个对象来到年轻代的伊甸园,先判断伊甸园空间是否充足,充足则直接放入伊甸园

    2:当伊甸园空间不足(使用gc工具可以看图达到一个峰值),此时图二的执行引擎会发起一个minor GC的垃圾收集线程处理垃圾(垃圾算法使用GC Roots(跟可达性分析算法)),会把部分的伊甸园对象放入s0或者s1,此时因为s1,s0存活区的对象,gc已经标记过,记为,1,2,3.....也即是说每minor GC触发一次,同样一个对象没有被清理掉,

    3:当s0,s1次数达到15次,会把s0,s1的对象放入到老年代

    4:当老年代的内存空间全部挤满,那么图二的执行引擎会产生 Full GC(具体是什么垃圾收集器看执行引擎)

    5:当老年代垃圾清理后,老年代内存不足以保存S0,S1存活区的对象,那么就会抛出:OutOrMemorryError

     

    jdk自带的GC工具(win+R-->cmd命令):jvisualvm

  • 相关阅读:
    Hadoop、spark
    Hadoop、spark
    Hadoop、spark
    Hadoop、spark
    SQL查询表中的用那些索引
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    【转】迷你区块链(mini blockchain in python)
    理解 Web 3
    【转】数字货币钱包:生态及技术
    【转】用 Witnet 协议使加密网络可以跨链访问
  • 原文地址:https://www.cnblogs.com/qq1141100952com/p/15004599.html
Copyright © 2020-2023  润新知