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 运维 监控
定位频繁创建对象导致内存溢出风险的思路
定位频繁创建对象导致内存溢出风险的思路
295 1
|
2月前
|
存储 算法 Java
【JVM】垃圾释放方式:标记-清除、复制算法、标记-整理、分代回收
【JVM】垃圾释放方式:标记-清除、复制算法、标记-整理、分代回收
60 2
|
Java
结合代码和内存变化图一步步弄懂JVM的FullGC
一步步结合代码去验证jvm的内存变化,并画出内存变化的示意图,从而探索出jvm fullGC的原因。
403 0
|
存储 缓存 算法
怎么理解Java内存区域
怎么理解Java内存区域
128 0
怎么理解Java内存区域
|
缓存 Java 数据库
如何避免无意间创建多余对象
6 避免创建不必要的对象 从字面意思上来看,大家肯定都知道创建不必要的对象是错误的做法。但这一节其实主要是提醒我们避免无意识的创建不必要对象的代码写法。
如何避免无意间创建多余对象
|
缓存 算法 Java
JVM05_堆的概述、内存结构、复制算法、Minor|Major|Full GC、私有区域TLAB、对象分配、参数总结、逃逸分析、栈上分配、锁消除、标量替换(二)
⑤. 复制算法 ⑥. Minor GC | Major GC | Full GC ⑦. 针对不同年龄阶段的对象分配原则 ⑧. TLAB(Thread Local Allocation Buffer)
137 0
JVM05_堆的概述、内存结构、复制算法、Minor|Major|Full GC、私有区域TLAB、对象分配、参数总结、逃逸分析、栈上分配、锁消除、标量替换(二)
|
存储 算法 Java
JVM05_堆的概述、内存结构、复制算法、Minor|Major|Full GC、私有区域TLAB、对象分配、参数总结、逃逸分析、栈上分配、锁消除、标量替换(一)
①. 堆的概述(共享|垃圾回收) ②. 堆的内存结构 ③. 堆空间大小的设置 -Xms -Xmx ④. 新生代与老年代参数设置 NewRation SurvivorRatio
144 0
JVM05_堆的概述、内存结构、复制算法、Minor|Major|Full GC、私有区域TLAB、对象分配、参数总结、逃逸分析、栈上分配、锁消除、标量替换(一)
|
JavaScript 前端开发 Java
JavaScript的垃圾回收机制,清除无用变量,释放多余内存,展现更好的性能
本篇文章将讲解一下javascript的垃圾回收机制。同时,我们必须先具备作用域链的概念,不懂的小伙伴可以先花3分钟观看一下这篇文章,简单了解一下作用域链的知识——从零开始讲解JavaScript中作用域链的概念及用途
531 0