首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

004. 深入JVM学习—Java垃圾回收流程

当有一个新对象产生,需要分配空间; 首先会判断伊甸园区是否有内存空间,如果有内存空间,则直接将新对象保存在伊甸园区; 如果伊甸园区内存空间不足,会自动执行Minor GC操作,将伊甸园区无用的内存空间进行清理...;清理之后会判断伊甸园区的内存空间是否充足?...如果内存空间充足则将新的对象在伊甸园区进行分配; 如果执行了Minor GC操作,发现伊甸园区内存依然不足,那么会判断存活区,如果存活区有内存空间,那么会把伊甸园区的部分活跃对象保存到存活区,随后继续判断伊甸园区的空间是否充足...,如果充足,则在伊甸园区进行新对象内存空间的分配; 如果此时存活区也已没有内存空间,那么判断老年区,如果此时老年区空间充足,则将存活区中的活跃对象保存到老年区,而后存活区就会出现空余空间,而后伊甸园区将活跃对象保存在存活区之中...,而后在伊甸园区中为新对象开辟空间; 如果此时老年代也是满的,此时将产生Major GC(Full GC),进行老年代的内存清理; 如果老年代执行了Full GC之后,发现依然无法实现对象的保存

50110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    jstat命令总结

    0.000 0 0.000 0.000 PS C:\> S0C:第一个幸存区的大小 S1C:第二个幸存区的大小 S0U:第一个幸存区的使用大小 S1U:第二个幸存区的使用大小 EC:伊甸园区的大小...EU:伊甸园区的使用大小 OC:老年代大小 OU:老年代使用大小 MC:方法区大小 MU:方法区使用大小 CCSC:压缩类空间大小 CCSU:压缩类空间使用大小 YGC:年轻代垃圾回收次数 YGCT:...EU:伊甸园区的使用大小 YGC:年轻代垃圾回收次数 YGCT:年轻代垃圾回收消耗时间 新生代内存统计 gcnewcapacity PS C:\> jstat -gcnewcapacity 6368...EC:当前伊甸园区大小 YGC:年轻代垃圾回收次数 FGC:老年代回收次数 老年代垃圾回收统计 gcold PS C:\> jstat -gcold 6368 MC MU...六、参考 jstat命令查看jvm的GC情况 (以Linux为例) jvm优化必知系列——监控工具 一个java内存泄漏的排查案例 ---- 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

    1.9K10

    jvm 教程动画版

    我们看到年轻代分为伊甸园区,幸存者0区,幸存者1 区。...这时候我们看一下代码中jjvm 的配置 最大对象包括年轻代和老年代=300, 幸存者和伊甸园的比例是1:8, 老年代和年轻代的比例是1:2 由此我们可以得出 伊甸园80 幸存者0:10 幸存者...1:10 老年代:200 从图上伊甸园的格子8X10 我们也能看出和我们的猜想是一样的。...首先伊甸园的格子数值是对象的编号,下面幸存者0 和1区的 格子里面有两个数值,第二个是年龄。也就是被回收一次,年龄加一,超过最大年龄就送到老年代。 默认是15 ,现在是3....一个伊甸园区加上幸存者区, 但是这个需要老年代的分配担保。 要是伊甸园区不够,全部进入老年代就直接引发fullgc .

    31820

    Jstat命令详解-1.8

    gc pid 垃圾回收统计 [1240] - S0C:第一个幸存区的大小 - S1C:第二个幸存区的大小 - S0U:第一个幸存区的使用大小 - S1U:第二个幸存区的使用大小 - EC:伊甸园区的大小...- EU:伊甸园区的使用大小 - OC:老年代大小 - OU:老年代使用大小 - MC:方法区大小 - MU:方法区使用大小 - CCSC:压缩类空间大小 - CCSU:压缩类空间使用大小...- S0U:第一个幸存区的使用大小 - S1U:第二个幸存区的使用大小 - TT:对象在新生代存活的次数 - MTT:对象在新生代存活的最大次数 - DSS:期望的幸存区大小 - EC:伊甸园区的大小...- EU:伊甸园区的使用大小 - YGC:年轻代垃圾回收次数 - YGCT:年轻代垃圾回收消耗时间 jstat -gccapacity pid 堆内存统计 记忆这个命令可以根据单词组合记忆...EC:当前伊甸园区大小 YGC:年轻代垃圾回收次数 FGC:老年代回收次数 jstat -gcoldcapacity pid 老年代内存空间统计 [1240] OGCMN:老年代最小容量 OGCMX

    2.5K30

    JVM进阶

    J9VMJIT jvm只有一个heap,大小可以调节,默认:实际使用1/64,试图申请内存的1/4(最大内存), -Xms1024m -Xmx1024m 堆内存细分 新生代 8:1:1----》伊甸园...垃圾回收都在伊甸园,老生区 伊甸园满了---》对伊甸园轻GC--->进入幸存区----》也满了---》对伊甸园,幸存区重GC-----》进入养老区---》又满了----》OOM 但进入老生区对象很少...dump 添加启动参数 -XX:+HeapDumpOnOutOfMemoryError GC算法 引用计数法,循环引用无法解决(不常使用) 复制算法(浪费一个幸存区,复制比较费时,存活度较低时常用) 伊甸园满了...-》轻GC---》到幸存区0(随机选一个) 伊甸园又满了---》轻GC--》存回对象会放到幸存区1,且就会把幸存区0的复制到幸存1,幸存0变为空 再此GC时,存活对象--》0,幸存1也复制到0 经历了15

    37421

    jstat命令查看jvm的GC情况 (以Linux为例)

    失败类型 FailedMethod: 失败的方法 垃圾回收统计 S0C: 第一个幸存区的大小 S1C: 第二个幸存区的大小 S0U: 第一个幸存区的使用大小 S1U: 第二个幸存区的使用大小 EC: 伊甸园区的大小...EU: 伊甸园区的使用大小 OC: 老年代大小 OU: 老年代使用大小 MC: 方法区大小 MU: 方法区使用大小 CCSC: 压缩类空间大小 CCSU: 压缩类空间使用大小 YGC: 年轻代垃圾回收次数...S1C: 第二个幸存区的大小 S0U: 第一个幸存区的使用大小 S1U: 第二个幸存区的使用大小 TT: 对象在新生代存活的次数 MTT: 对象在新生代存活的最大次数 DSS: 期望的幸存区大小 EC: 伊甸园区的大小...EU: 伊甸园区的使用大小 YGC: 年轻代垃圾回收次数 YGCT: 年轻代垃圾回收消耗时间 新生代内存统计 NGCMN: 新生代最小容量 NGCMX: 新生代最大容量 NGC: 当前新生代容量 S0CMX...: 最大幸存1区大小 S0C: 当前幸存1区大小 S1CMX: 最大幸存2区大小 S1C: 当前幸存2区大小 ECMX: 最大伊甸园区大小 EC: 当前伊甸园区大小 YGC: 年轻代垃圾回收次数 FGC

    1.2K10

    服务器端使用jstat定位GC问题的有关命令

    S0:幸存1区当前使用比例 S1:幸存2区当前使用比例 E:伊甸园区使用比例 O:老年代使用比例 M:元数据区使用比例 CCS:压缩使用比例 YGC:年轻代垃圾回收次数 FGC:老年代垃圾回收次数 FGCT...S0C:第一个幸存区的大小 S1C:第二个幸存区的大小 S0U:第一个幸存区的使用大小 S1U:第二个幸存区的使用大小 EC:伊甸园区的大小 EU:伊甸园区的使用大小 OC:老年代大小 OU:老年代使用大小...NGCMN:新生代最小容量 NGCMX:新生代最大容量 NGC:当前新生代容量 S0C:第一个幸存区大小 S1C:第二个幸存区的大小 EC:伊甸园区的大小 OGCMN:老年代最小容量 OGCMX:老年代最大容量...EU:伊甸园区的使用大小 YGC:年轻代垃圾回收次数 YGCT:年轻代垃圾回收消耗时间   新生代内存统计 ?...EC:当前伊甸园区大小 YGC:年轻代垃圾回收次数 FGC:老年代回收次数   老年代垃圾回收统计 ?

    1.2K30

    JVM-jstat(虚拟机统计信息监视工具)的使用

    打印出指定线程id=20220的gc 每隔250毫秒打印一次,总共打印10次 S0C 第一个幸存区的大小 S1C 第二个幸存区的大小 S0U 第一个幸存区的使用大小 S1U 第二个幸存区的使用大小 EC 伊甸园区的大小...EU 伊甸园区的使用大小 OC 老年代大小 OU 老年代使用大小 MC 方法区大小 MU 方法区使用大小 CCSC 压缩类空间大小 CCSU 压缩类空间使用大小 YGC 年轻代垃圾回收次数 YGCT...堆内存统计 jstat -gccapacity 20220 NGCMN 新生代最小容量 NGCMX 新生代最大容量 NGC 当前新生代容量 S0C 第一个幸存区大小 S1C 第二个幸存区的大小 EC 伊甸园区的大小...EU 伊甸园区的使用大小 YGC 年轻代垃圾回收次数 YGCT 年轻代垃圾回收消耗时间 关注最大最小新生代空间 jstat -gcnewcapacity 20220 NGCMN 新生代最小容量 NGCMX...新生代最大容量 NGC 当前新生代容量 S0CMX 最大幸存1区大小 S0C 当前幸存1区大小 S1CMX 最大幸存2区大小 S1C 当前幸存2区大小 ECMX 最大伊甸园区大小 EC 当前伊甸园区大小

    60220

    JVM 调优 2:GC 如何判断对象是否为垃圾,三色标记算法应用原理及存在的问题?

    我们将新生代分为三个部分:伊甸园区和两个 survivor 区。 伊甸园区,即对象诞生的地方,存放所有新生的对象,与在西方中我们人类诞生的地方——伊甸园想对应。...4.5、 Copying(拷贝)算法在年轻代中的具体应用 第一次垃圾回收:首先将 10% 的幸存对象拷贝到第一个 survivor 中,即 s0 中,然后将整个伊甸园区进行清除。...如下图所示: 第二次垃圾回收:将伊甸园区中有用的对象拷贝到另一个 survivor 中,即 s1 中,再将之前 s0 中的对象(前提是有用)拷贝到 s1 中,对伊甸园区与第一个 s0 进行垃圾回收...如下图所示: 第三次垃圾回收:再次利用 s0,将之前存活的对象与伊甸园区中产生的新对象存放在 s0 中,对伊甸园区与 s1 进行二垃圾回收。...如下图所示: 第 n 次垃圾回收:如此循环往复利用新生代中的伊甸园区与 survivor 区即可。

    55140

    JVM 调优系列 2:GC 如何判断对象是否为垃圾,三色标记算法应用原理及存在的问题

    我们将新生代分为三个部分:伊甸园区和两个 survivor 区。 伊甸园区,即对象诞生的地方,存放所有新生的对象,与在西方中我们人类诞生的地方——伊甸园想对应。...4.5、 Copying(拷贝)算法在年轻代中的具体应用 第一次垃圾回收:首先将 10% 的幸存对象拷贝到第一个 survivor 中,即 s0 中,然后将整个伊甸园区进行清除。...如下图所示: 第二次垃圾回收:将伊甸园区中有用的对象拷贝到另一个 survivor 中,即 s1 中,再将之前 s0 中的对象(前提是有用)拷贝到 s1 中,对伊甸园区与第一个 s0 进行垃圾回收。...如下图所示: 第三次垃圾回收:再次利用 s0,将之前存活的对象与伊甸园区中产生的新对象存放在 s0 中,对伊甸园区与 s1 进行二垃圾回收。...如下图所示: 第 n 次垃圾回收:如此循环往复利用新生代中的伊甸园区与 survivor 区即可。

    76311

    jvm垃圾回收算法

    :MaxNewSize-size ) 幸存区比例(动态) -XX:InitialSurvivorRatio-ratio和-XX:+UseAdaptiveSizePolicy 幸存区比例(ratio是指伊甸园所在比例...这里看下新生代,我们可以发现内存分为了伊甸园与幸存区俩部分,幸存区又被分为了两部分,可以认为我们上诉提到的from和to。...这里一旦伊甸园存满了,就需要进行清理,我们称之为Minor GC,清理过程就是上诉的标记-复制过程,而后我们将伊甸园中幸存的对象移入到幸存区中,然后直接清理伊甸园即可。...在之后伊甸园又满了,我们这时不仅仅要对伊甸园对象进行处理,也要对幸存区中存有数据的那一块进行处理,将二者之中幸存的对象移入到幸存区的另一块中,然后交换二者的角色(即交换from与to的角色)。

    16110

    Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day35】—— JVM2

    开发岗高频面试题主要出自以下各技术栈:Java基础知识、集合容器、并发编程、JVM、Spring全家桶、MyBatis等ORMapping框架、MySQL数据库、Redis缓存、RabbitMQ消息队列、Linux...新生代(Young generation)用来保存那些第一次被创建的对象,它被分成三个空间: 一个伊甸园空间(Eden) 两个幸存者空间(From Survivor、To Survivor) 默认新生代空间的分配...:Eden : From : To =8 : 1 : 1 每个空间的执行说明如下: 绝大多数刚刚被创建的对象会存放在伊甸园空间(Eden)。...绝大多数刚刚被创建的对象会存放在伊甸园空间(Eden)。 在伊甸园空间执行第一次GC(Minor GC)之后,存活的对象被移动到其中一个幸存者空间(Survivor)。...此后,每次伊甸园空间执行GC后,存活的对象会被堆积在同一个幸存者空间。 当一个幸存者空间饱和,还在存活的对象会被移动到另一个幸存者空间。

    29920

    面试专题-虚拟机篇

    下同 堆内存,按比例设置 解释: -XX:NewRatio=2:1 表示老年代占两份,新生代占一份 -XX:SurvivorRatio=4:1 表示新生代分成六份,伊甸园占四份,from 和 to 各占一份...eden,最初对象都分配到这里,与幸存区 survivor(分成 from 和 to)合称新生代, 当伊甸园内存不足,标记伊甸园与 from(现阶段没有)的存活对象 将存活对象采用复制算法复制到...to 中,复制完毕后,伊甸园和 from 内存都得到释放 将 from 和 to 交换位置 经过一段时间后伊甸园的内存又出现不足 标记伊甸园与 from(现阶段没有)的存活对象 将存活对象采用复制算法复制到...当伊甸园需要垃圾回收时,挑出一个空闲区域作为幸存区,用复制算法复制存活对象,需要暂停用户线程 复制完成,将之前的伊甸园内存释放 随着时间流逝,伊甸园的内存又有不足 将伊甸园以及之前幸存区中的存活对象...混合收集阶段中,参与复制的有 eden、survivor、old,下图显示了伊甸园和幸存区的存活对象复制 下图显示了老年代和幸存区晋升的存活对象的复制 复制完成,内存得到释放。

    31920
    领券