虚拟机栈
关于虚拟机栈的介绍在JVM-整体结构(1)有详细的介绍,再此就不浪费篇幅编写了。
堆
- JDK1.7
- 新生代+老年代+
永久代(PermSpace)
- 新生代+老年代+
- JDK1.8
- 新生代+老年代+元空间(
MetaSpace)
- 新生代+老年代+元空间(
- 新生代
- Eden区
- S0区
- S1区
- 老年代
下图主要描述了Eden区出现GC时丢弃未引用的对象(
ojb4、obj5),将(obj1、obj2、obj3)对象放入S0区,当(obj11、obj12)进入Eden区时发现此时空间不足,所以再此出现GC,此时将对新生代区未引用对象回收,发现S0区中的(obj3)未引用所以将对其GC操作,然后将(obj11、obj12)放入Eden区,同时将(obj1、obj2)其余对象进入S1区,当S1区的对象年龄计数器达到15时该对象晋升到老年代区。
MinorGC触发机制
当年轻代空间不足时就会触发,年轻代指的是Eden区,不是S0或S1区。
FullGC触发机制
当开发者调用System.gc()时系统建议执行FullGC,不是必然的。
元空间
- 常量池
- 方法元信息
- 类元信息