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

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

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

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

    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

    2.7K10

    jvm 教程动画版

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

    32320

    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

    37521

    服务器端使用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 当前伊甸园区大小

    61820

    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.4K10

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

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

    55740

    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后,存活的对象会被堆积在同一个幸存者空间。 当一个幸存者空间饱和,还在存活的对象会被移动到另一个幸存者空间。

    30320

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

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

    78311

    jvm 性能调优工具之 jstat

    S0U :年轻代中第一个survivor(幸存区)目前已使用空间 (字节) S1U :年轻代中第二个survivor(幸存区)目前已使用空间 (字节) EC :年轻代中Eden(伊甸园...中当前的容量 (字节) S0C :年轻代中第一个survivor(幸存区)的容量 (字节) S1C : 年轻代中第二个survivor(幸存区)的容量 (字节) EC :年轻代中Eden(伊甸园...目前已使用空间 (字节) S1U :年轻代中第二个survivor(幸存区)目前已使用空间 (字节) TT:持有次数限制 MTT:最大持有次数限制 DSS:期望的幸存区大小 EC:年轻代中Eden(伊甸园...)的容量 (字节) EU :年轻代中Eden(伊甸园)目前已使用空间 (字节) YGC :从应用程序启动到采样时年轻代中gc次数 YGCT:从应用程序启动到采样时年轻代中gc所用时间(s) 示例七: -...)的最大容量 (字节) EC:年轻代中Eden(伊甸园)的容量 (字节) YGC:从应用程序启动到采样时年轻代中gc次数 FGC:从应用程序启动到采样时old代(全gc)gc次数 示例八: -gcold

    1.2K140

    jstat命令详解

    (幸存区)的容量 (字节) S0U 年轻代中第一个survivor(幸存区)目前已使用空间 (字节) S1U 年轻代中第二个survivor(幸存区)目前已使用空间 (字节) EC 年轻代中Eden(伊甸园...)的容量 (字节) EU 年轻代中Eden(伊甸园)目前已使用空间 (字节) OC Old代的容量 (字节) OU Old代目前已使用空间 (字节) PC Perm(持久代)的容量 (字节) PU Perm...年轻代(young)中当前的容量 (字节) S0C 年轻代中第一个survivor(幸存区)的容量 (字节) S1C 年轻代中第二个survivor(幸存区)的容量 (字节) EC 年轻代中Eden(伊甸园...统计gc信息 显示列名 具体描述 S0 年轻代中第一个survivor(幸存区)已使用的占当前容量百分比 S1 年轻代中第二个survivor(幸存区)已使用的占当前容量百分比 E 年轻代中Eden(伊甸园...)的容量 (字节) EU 年轻代中Eden(伊甸园)目前已使用空间 (字节) YGC 从应用程序启动到采样时年轻代中gc次数 YGCT 从应用程序启动到采样时年轻代中gc所用时间(s) 7、jstat

    3.6K40
    领券