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。。。


目录
相关文章
|
Arthas 运维 监控
定位频繁创建对象导致内存溢出风险的思路
定位频繁创建对象导致内存溢出风险的思路
290 1
|
1月前
|
存储 算法 Java
【JVM】垃圾释放方式:标记-清除、复制算法、标记-整理、分代回收
【JVM】垃圾释放方式:标记-清除、复制算法、标记-整理、分代回收
51 2
|
6月前
|
存储 Java
StringTable垃圾回收跟踪案例
StringTable垃圾回收跟踪案例
35 0
|
6月前
|
存储 算法 Java
JVM-01Java内存区域与内存溢出异常(上)【运行时区域数据】
JVM-01Java内存区域与内存溢出异常(上)【运行时区域数据】
56 0
|
Java
结合代码和内存变化图一步步弄懂JVM的FullGC
一步步结合代码去验证jvm的内存变化,并画出内存变化的示意图,从而探索出jvm fullGC的原因。
398 0
|
存储 缓存 算法
怎么理解Java内存区域
怎么理解Java内存区域
127 0
怎么理解Java内存区域
|
缓存 算法 Java
JVM05_堆的概述、内存结构、复制算法、Minor|Major|Full GC、私有区域TLAB、对象分配、参数总结、逃逸分析、栈上分配、锁消除、标量替换(二)
⑤. 复制算法 ⑥. Minor GC | Major GC | Full GC ⑦. 针对不同年龄阶段的对象分配原则 ⑧. TLAB(Thread Local Allocation Buffer)
135 0
JVM05_堆的概述、内存结构、复制算法、Minor|Major|Full GC、私有区域TLAB、对象分配、参数总结、逃逸分析、栈上分配、锁消除、标量替换(二)
|
存储 算法 Java
JVM05_堆的概述、内存结构、复制算法、Minor|Major|Full GC、私有区域TLAB、对象分配、参数总结、逃逸分析、栈上分配、锁消除、标量替换(一)
①. 堆的概述(共享|垃圾回收) ②. 堆的内存结构 ③. 堆空间大小的设置 -Xms -Xmx ④. 新生代与老年代参数设置 NewRation SurvivorRatio
143 0
JVM05_堆的概述、内存结构、复制算法、Minor|Major|Full GC、私有区域TLAB、对象分配、参数总结、逃逸分析、栈上分配、锁消除、标量替换(一)