美文网首页
JVM-垃圾回收GC(1)

JVM-垃圾回收GC(1)

作者: 心無旁騖丶 | 来源:发表于2021-02-18 21:12 被阅读0次

    GC(Garbage Collector)概念

    image.png
    • MinorGC/YGC:年轻代空间耗尽
    • MajorGC/FGC:在老年代无法继续分配空间时触发,新生代、老年代同时进行回收。

    堆内存逻辑分区(适用分代垃圾收集器)

    image.png
    • 查看新生代和老年代比例:
      命令:java -XX:+PrintFlagsFinal -version | grep NewRatio
      uintx NewRatio = 2
      新生代:老年代比例为1:2

    • 新生代包含Eden区和两个Survivor区

    • 永久代(1.7)Perm Generation
      必须指定大小限制
      字符串常量1.7存放在永久代

    • 元数据区(1.8)Metaspace
      可以不设置大小
      字符串常量1.8存放在堆

    对象的生命周期

    image.png
    image.png
    1. 一个对象生成,首先尝试在栈上分配
    2. 分配不下,进入Eden区
    3. 经过一次垃圾回收后,进入S1
    4. 下次垃圾回收进入S2
    5. 在S1/S2中反复,直到年龄够了进入Old区

    对象何时进入老年代

    • 超过XX:MaxTenuringThreshold指定次数(YGC)
      1.Parallel Scavenge 15
      2.CMS 6
      3.G1 15
      不重要
    • 动态年龄

    年龄从小到大进行累加,当加入某个年龄段后,累加和超过survivor区域*TargetSurvivorRatio的时候,就从这个年龄段网上的年龄的对象进行晋升。
    年龄1的占用了33%,年龄2的占用了33%,累加和超过默认的TargetSurvivorRatio(50%),年龄2和年龄3的对象都要晋升
    作者:xpbob
    链接:https://www.jianshu.com/p/989d3b06a49d

    相关文章

      网友评论

          本文标题:JVM-垃圾回收GC(1)

          本文链接:https://www.haomeiwen.com/subject/qainxltx.html