GC 的混乱之处

简介: 1.两个survivor的名字 在gclog中,from space永远指向不为空的那一块survivor space,也就是说时而s0,时而s1。那直接用s0 和 s1好了,还发明新名词干嘛? 图1-1  gclog截图 在下图中,可以清楚地看到,minorGC时,s1+eden区域被清空,活着的对象被复制到s0中。 图1-2 jstat -gcutil截图 2.G

1.两个survivor的名字

在gclog中,from space永远指向不为空的那一块survivor space,也就是说时而s0,时而s1。那直接用s0 和 s1好了,还发明新名词干嘛?


图1-1  gclog截图


在下图中,可以清楚地看到,minorGC时,s1+eden区域被清空,活着的对象被复制到s0中。


图1-2 jstat -gcutil截图

2.GC概念

minorGC 应该跟 YoungGC是一个概念吧,为什么要有两个名字? major GC跟full gc又是什么呢?

在gc.log中,明明显示:
{Heap before GC invocations=71 (full 2):
表示full GC进行了两次。为什么同一时刻在jstat gcutil中,显示四次呢?
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
 16.96   0.00  86.74  77.96  72.15     74    5.858     4    2.369    8.227

3. 各空间的名字

不同的垃圾回收器对各个空间的称呼也不一样,比如永久代,有的叫Perm Space,有的叫 Metaspace。。。


目录
相关文章
|
3月前
|
算法 Java
【JVM】survivor区的解释
【JVM】survivor区的解释
61 0
|
4月前
|
存储 Java
StringTable垃圾回收跟踪案例
StringTable垃圾回收跟踪案例
26 0
|
存储 缓存 算法
Java内存溢出问题深入探究及其解决策略
引言 Java内存溢出是一个常见且棘手的问题,可能会导致程序的性能急剧下降或者崩溃,给业务带来严重的影响。为了深入解析和理解此问题,本文将详细探究Java的内存模型,内存溢出的根本原因,诊断方法以及解决策略
350 0
|
4月前
|
存储 算法 Java
JVM-01Java内存区域与内存溢出异常(上)【运行时区域数据】
JVM-01Java内存区域与内存溢出异常(上)【运行时区域数据】
50 0
|
12月前
|
测试技术 编译器 C++
栈局部变量优化探究,意外发现了 vs 的一个 bug ?
栈局部变量优化探究,意外发现了 vs 的一个 bug ?
|
存储 Java 编译器
Java内存区域介绍以及JDK1.8内存变化
Java内存区域介绍以及JDK1.8内存变化
309 0
Java内存区域介绍以及JDK1.8内存变化
|
Java
结合代码和内存变化图一步步弄懂JVM的FullGC
一步步结合代码去验证jvm的内存变化,并画出内存变化的示意图,从而探索出jvm fullGC的原因。
380 0
|
存储 缓存 算法
怎么理解Java内存区域
怎么理解Java内存区域
119 0
怎么理解Java内存区域
|
缓存 算法 Java
JVM05_堆的概述、内存结构、复制算法、Minor|Major|Full GC、私有区域TLAB、对象分配、参数总结、逃逸分析、栈上分配、锁消除、标量替换(二)
⑤. 复制算法 ⑥. Minor GC | Major GC | Full GC ⑦. 针对不同年龄阶段的对象分配原则 ⑧. TLAB(Thread Local Allocation Buffer)
126 0
JVM05_堆的概述、内存结构、复制算法、Minor|Major|Full GC、私有区域TLAB、对象分配、参数总结、逃逸分析、栈上分配、锁消除、标量替换(二)