Full GC的发生条件:

Full GC一般来说指的是全堆和方法区的垃圾收集。
从大的方面来说,Full GC发生的条件主要可以分为两类。

  1. 因为对象在自然情况下到达老年代导致的老年代空间不足

    1. 对象熬过15次垃圾收集,到达晋升到老年代的标准,而晋升到老年代,而老年代的空间不足以放下这些内容,会触发Full GC
    2. 由于对象动态年龄判定,而晋升到老年代
    3. 大对象直接进入老年代, 而导致的空间不足
    4. 空间分配担保, 在进行GC时,最坏的情况是此时Survivor区的对象全部存活着,则to0区和survivor的对象要进入老年代。所以,在进行minor Gc前要检查老年代的最大连续可用空间是否大于年轻代的所有对象总和,如果大于,则可以确保这次垃圾收集是安全的。如果不大于,并且不允许空间分配担保,则要进行Full Gc. 如果不大于,且允许进行空间分配担保,再看看是否大于历次晋升的平均大小,如果大于,则进行一次有“风险”的Minor GC。否则进行Full GC。
      1. 在jdk1.6后,空间分配担保与这个参数无关。只要老年代最大连续可用空间大于新生代对象的大小或者平均大小,就会进行minor gc
  2. 因为在一些特殊情况下的空间不足导致的。
    1. CMS垃圾收集器中,由于浮动垃圾的出现,会预留一部分的老年代空间用来承载运行中的用户程序。当达到这个设定的阈值之后,会进行Full GC
    2. CMS是基于标记-清除算法的,会产生内存碎片问题,当进行若干次GC后,会进行一次Full GC用来合并内存空间。

吞 吐 量 = 运 行 用 户 代 码 时 间 用 户 代 码 时 间 + G C 时 间 = 1 − G C 时 间 总 时 间 吞吐量=\frac{运行用户代码时间}{用户代码时间+GC时间}=1-\frac{GC时间}{总时间} 吞吐量=用户代码时间+GC时间运行用户代码时间​=1−总时间GC时间​ 停顿时间越短,则需要调整小新生代,吞吐量也可能会下降。

Full GC发生的条件相关推荐

  1. java什么时会出现gc_面试题:java GC发生在会么时候,对什么东西,做了什么事情...

    转自cy609329119的 面试题:"你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?" 面试题目: 地球人都知道,Java有个东西叫垃圾收集器,它让创建的对 ...

  2. JVM:内存分配与回收策略?Full GC 的触发条件?StopTheWorld ?

    内存分配与回收策略 Minor GC 和 Full GC Minor GC:发生在新生代上,因为新生代对象存活时间很短,因此 Minor GC 会频繁执行,执行的速度一般也会比较快. Full GC: ...

  3. java中gc触发的条件,各种gc触发条件统计

    Minor GC Minor GC:当Eden区所剩空间,不满足分配需求时,就会触发Minor GC. Full GC 当进行Minor GC时,会预测老年代能否承受得住新生代晋升的空间,预测的行为是 ...

  4. full GC触发的条件

    除直接调用System.gc外,触发Full GC执行的情况有如下四种. 1. 旧生代空间不足 旧生代空间只有在新生代对象转入及创建为大对象.大数组时才会出现不足的现象,当执行Full GC后空间仍然 ...

  5. minor gc和Major GC,Full GC的触发条件

    Minor GC Minor GC指新生代GC,即发生在新生代(包括Eden区和Survivor区)的垃圾回收操作,当新生代无法为新生对象分配内存空间的时候,会触发Minor GC.因为新生代中大多数 ...

  6. 一文搞懂Y-GC和Full GC的触发条件

    1 Young GC触发时机 一般在新生代Eden区满后触发,采用复制算法回收新生代垃圾. 2 Old GC和Full GC的触发时机 2.1 发生Young GC前检查,若 老年代可用连续内存空间& ...

  7. 死锁发生的条件和预防

    所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程. ...

  8. 死锁发生的条件以及如何避免死锁

    ⅰ死锁 ¤死锁,它是操作系统或软件运行的一种状态:在多任务下,当一个或多个进程等待系统资源而资源又被系统本身或其它进程占用时,就形成了死锁. 死锁发生的最常见形式是两个或多个线程等待被另一个线程占用的 ...

  9. java中gc触发的条件_触发Full gc条件

    1.调用System.gc import java.util.ArrayList; import java.util.List; /** * * created by: gaoxingliang@ou ...

最新文章

  1. 一款优秀的翻译软件DeepL
  2. Java的迭代器—— Iterator
  3. HTML5编程实战之二:用动画的形式切换图片
  4. python元祖迭代_如何在Python中迭代元组的堆栈
  5. linux 控制台存储,技术|使用 Stratis 从命令行管理 Linux 存储
  6. java接口_Java接口
  7. linux强制获得锁,Linux中的两种文件锁——协同锁与强制锁
  8. MATLAB 正态分布点云配准(NDT)
  9. TCP与UDP的区别
  10. c语言均衡器,拿什么拯救你的音色——初识均衡器
  11. 001.UG_NX概述
  12. 提起海洋和通海水域污染损害赔偿诉讼主体的几个层面
  13. echarts年龄饼图_ECharts中饼图的操作
  14. 智能血压计方案/设计案列/APP/小程序
  15. 菜鸟教程 http://www.runoob.com/
  16. JAVA工具篇--java.awt.Robot模拟微信批量添加好友
  17. 人民币中间价“四连涨”迫近6.6区间 创逾半年新高
  18. 判断一天是一年中的第几天
  19. leetcode 1400. 构造 K 个回文字符串
  20. 利用手机进行声源运动追踪的相关论文

热门文章

  1. java中Statement详细用法。
  2. Java---抽象类
  3. python打包上传至pypi —— 具有多个目录的项目工程快速打包上传
  4. Android Compatibility
  5. java-----------GUI菜单设计
  6. 安利下这个库,解放你左手
  7. 算法导论习题C.2-9答案
  8. lucene的建立索引,搜索,中文分词
  9. 什么是 ARP 攻击?
  10. JS中的DOM查询(2),(parentNode、previousSibling、nextSibling)