zoukankan      html  css  js  c++  java
  • Minor GC ,Full GC 触发条件是什么?

    youngGc触发条件
    大多数情况下,对象直接在年轻代中的Eden区进行分配,如果Eden区域没有足够的空间,那么就会触发YGC(Minor GC)
    进入老年代的途径
    1、YGC时,To Survivor区不足以存放存活的对象,对象会直接进入到老年代。
    2、经过多次YGC后,如果存活对象的年龄达到了设定阈值,则会晋升到老年代中。
    3、动态年龄判定规则,To Survivor区中相同年龄的对象,如果其大小之和占到了 To Survivor区一半以上的空间,那么大于此年龄的对象会直接进入老年代,而不需要达到默认的分代年龄。
    4、大对象:由-XX:PretenureSizeThreshold启动参数控制,若对象大小大于此值,就会绕过新生代, 直接在老年代中分配。
    FullGc触发条件
    1、老年代的内存使用率达到了一定阈值(可通过参数调整),直接触发FGC
    2、空间分配担保:在YGC之前,会先检查老年代最大可用的连续空间是否大于新生代所有对象的总空间。如果小于,说明YGC是不安全的,则会查看参数 HandlePromotionFailure 是否被设置成了允许担保失败,如果不允许则直接触发Full GC;如果允许,那么会进一步检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小,如果小于也会触发 Full GC
    3、Metaspace(元空间)在空间不足时会进行扩容,当扩容到了-XX:MetaspaceSize 参数的指定值时,也会触发FGC
    4、System.gc() 或者Runtime.gc() 被显式调用时,触发FGC。

    郭慕荣博客园
  • 相关阅读:
    Win2000下系统进程隐藏代码
    关于Windows下ShellCode编写的一点思考
    木马是如何编写的(三)
    MS04011远程缓冲区溢出代码
    关于Windows下ShellCode编写的一点思考
    木马是如何编写的(三)
    运用GIMP制作平面图片
    PCMan File Manager:标签式的文件解决软件
    AutoMySQLBackup——主动备份 MySQL 数据库的剧本
    ubuntu8.04下USB转UART接口的应用
  • 原文地址:https://www.cnblogs.com/jelly12345/p/14544761.html
Copyright © 2011-2022 走看看