在Java语言中,可作为GC Roots的对象包括下面几种:
- JVM栈(栈帧数据中的本地变量表)中引用的对象。
- 方法区中类静态属性引用的对象。
- 方法区中常量引用的对象。
- Native 方法栈中JNI引用的对象。
Java堆内存模型
- Java堆按照对象存活的时间可分为新生代和老年代
- 新生代又分为三个部分:一个内存较大的Eden区,和两个内存较小且大小相同的Survivor区,比例为8:1:1.
- Eden区存放新生的对象
- Survivor存放每次垃圾回收后存活的对象
什么样的对象会被移入老年代?
①.新生代中经历过15次GC的对象
②.大对象直接进入老年代