美文网首页
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