什么条件会触发 Java 的 Young GC?

Young GC,即 新生代垃圾回收,是 Java 垃圾回收机制中的一种重要回收方式。它主要用于回收 新生代 中的对象,尤其是 Eden 区Survivor 区 中的对象。Young GC 是一种 Minor GC,其触发条件主要与新生代的内存分配和使用情况相关。


1. Eden 区满

  • Eden 区 是新生代的主要内存区域,存放大多数新创建的对象。
  • Eden 区 的内存被填满时,JVM 会触发 Young GC 来回收 Eden 区 中不再存活的对象,并将存活的对象转移到 Survivor 区

2. Survivor 区的空间不足

  • 新生代中除了 Eden 区,还包括两个 Survivor 区S0S1)。
  • Young GC 发生时,存活的对象会被从 Eden 区 复制到 Survivor 区
  • 如果 Survivor 区 中没有足够的空间来存放从 Eden 区 复制过来的对象,JVM 会触发 Young GC 来清理并腾出足够的空间。

3. 分配失败

  • 如果 JVM 在尝试分配内存时无法找到足够的空间,Young GC 会被触发,以释放 Eden 区Survivor 区 中的内存。

4. Minor GC 条件

  • Young GC 也可以在内存分配过程中,基于内存需求进行触发。例如,在新生代的对象数量增加到一定程度时,JVM 会触发 Minor GC

5. JVM 内存阈值设置

  • 在某些情况下,JVM 的内存配置可能会影响 Young GC 的触发。例如,JVM 启动时通过 -Xmn-XX:NewSize-XX:MaxNewSize 设置新生代的大小,如果新生代内存接近阈值,也会触发 Young GC

6. Young GC 的总结

触发条件 描述
Eden 区满 Eden 区 被填满,无法再容纳新对象时,触发 Young GC
Survivor 区空间不足 如果 Survivor 区 无法容纳所有存活对象时,触发 Young GC
分配失败 内存分配失败时,JVM 会触发 Young GC 来释放内存。
Minor GC 条件 对象增多,内存紧张时,JVM 会触发 Minor GC(即 Young GC)。
JVM 内存阈值设置 通过配置参数设置新生代大小,当新生代空间接近上限时,触发 Young GC

总结:

Young GC 主要在新生代空间不足时触发,目的是回收 Eden 区Survivor 区 中不再存活的对象,并腾出空间给新的对象。通过高频率的回收,Java 的 Young GC 能够快速回收短生命周期的对象,提高内存利用率。

什么条件会触发 Java 的 Young GC?的更多相关文章

  1. java old GC和young GC

    Java内存分配机制 摘自:http://www.cnblogs.com/zhguang/p/3257367.html 这里所说的内存分配,主要指的是在堆上的分配,一般的,对象的内存分配都是在堆上进行 ...

  2. Java Hotspot G1 GC的一些关键技术

    G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用,作为体验版随着JDK 6u14版本面世,在JDK 7u4版本发行时被正式推出,相 ...

  3. JVM:从实际案例聊聊Java应用的GC优化

    原文转载自美团从实际案例聊聊Java应用的GC优化,感谢原作者的贡献 当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化.但GC算法复杂 ...

  4. 从实际案例聊聊Java应用的GC优化

    转自美团点评技术博客:https://tech.meituan.com/jvm_optimize.html 当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步 ...

  5. 从实际案例聊聊Java应用的GC优化--转

    https://tech.meituan.com/jvm_optimize.html 当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化 ...

  6. Jstat在分析java的内存GC时的应用

    jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量.使用时,需加上查看进程的进程id,和所选参数. 执行:cd $JAVA_HOME/bin中执行jstat,注意j ...

  7. 一次young gc耗时过长优化过程

    1    问题源起 上游系统通过公司rpc框架调用我们系统接口超时(默认超时时间为100ms)数量从50次/分突然上涨到2000次/分,在发生变化时间段里我们的系统也没有做过代码变更,但上游系统的调用 ...

  8. [JVM-3]Java垃圾回收(GC)机制和垃圾收集器选择

    哪些内存需要回收? 1.引用计数法 这个算法的实现是,给对象中添加一个引用计数器,每当一个地方引用这个对象时,计数器值+1:当引用失效时,计数器值-1.任何时刻计数值为0的对象就是不可能再被使用的.这 ...

  9. 一次 Young GC 的优化实践(FinalReference 相关)

    本文转载自公众号:涤生的博客,阅读时间大约需要11分钟.涤生的文章看起来跟破案一样,很精彩,很有启发. 前言 博客已经好久没有更新了,主要原因是 18 年下半年工作比较忙,另外也没有比较有意思的题材, ...

  10. java虚拟机(十三)--GC调优思路

    GC调优对我们开发人员来说,如果你想要技术方面一直发展下去,这部分内容的了解是必不可少的,jvm对于工作.面试来说都很重要,GC调优的问题 更是重中之重,因为是对你jvm学习内容的实践,知识只有应用实 ...

随机推荐

  1. WinForm实现无边框窗体的拖动

    一个登录窗体,FormBorderStyle属性设置为None,打开后不能挪动位置,有时候会妨碍使用,有点恶心.网上找了段内容,实现拖动效果: #region 无边框拖动效果,Form被Picture ...

  2. XLSReadWriteII5的使用示例

    procedure TForm1.Button1Click(Sender: TObject); var i, n: Integer; XLS: TXLSReadWriteII5; // 引用XLSRe ...

  3. Q:linux上某个磁盘挂载不上

    想把新创建的 /dev/datavg/data_lv 挂载到 /mysql 目录上 mkfs -t xfs -f /dev/datavg/data_lv mount /dev/datavg/data_ ...

  4. IPTools for .NET:快速查询全球IP信息

    IPTools 是一个用于快速查询全球 IP 地址信息的库,支持国内和国际 IP 查询,提供详细的地理位置信息(如国家.省份.城市)以及经纬度等数据. 1. IPTools.China IPTools ...

  5. mongo数据库CPU使用率飙高及优化

    出现的情况 某天高高兴兴上班,发现一台mongo数据库负载较高,达到了300多,且一直很稳定,难道是硬件过时了. 检查主机的资源使用发现一个mongod进程使用了几乎所有的CPU资源. top - 1 ...

  6. Java后台获取微信小程序用户信息、openid

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  7. Leetcode 236. 二叉树的最近公共祖先 & 235. 二叉搜索树的最近公共祖先(Python3)

    236. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x ...

  8. Elasticsearch搜索引擎学习笔记(五)

    搜索功能 数据准备 1.自定义词库 慕课网 慕课 课网 慕 课 网 2.新建立索引shop 3.建立mappings POST /shop/_mapping (7.x之前的版本:/shop/_mapp ...

  9. git码云安装及使用菜鸟教程

    1.下载Windows本地码云 https://mirrors.huaweicloud.com/git-for-windows/(华为镜像下载),选择合适的版本下载,此处下载速度要快些 2.登录码云官 ...

  10. jquery的radio的change事件

    一.用的jquery的radio的change事件:当元素的值发生改变时,会发生 change 事件,radio选择不同name值选项的时候恰巧是值发生改变 表单单选框 <input type= ...