大对象，新生代存储不下的对象，分配担保直接到老年代。               

1. 年龄超过15
2. 相同年龄超过50%
3. 动态年龄分配，不同年龄特别多。
4. 内存担保，新生代垃圾回收无法完成，直接放入老年代。 **在GC前还会进行一次判断，如果要分配的内存>=Eden区大小的一半，那么会直接把要分配的内存放入老年代中。否则才会进入担保机制。**

TLAB的全称是Thread Local Allocation Buffer，即线程本地分配缓存区，这是一个线程专用的内存分配区域。

java -XX:+PrintCommandLineFlags -version

什么样的对象要被GC

判断回收算法

- 引用计数法，相互引用，循环引用
- 可达性分析，GCroot（本地变量表引用对象，用来关联对象关系、方法区中的静态变量和常量，虚拟机栈中本地变量表（局部变量），static成员，常量引用，本地方法栈中变量，类加载器，Thread）。
- 不可达对象，finalize可以挽回一次防止回收。
- 本地方法栈中JNI引用的对象

### 对象头内存分配

![](img\对象头描述.png)

![](img\对象头信息分布.png)

![](img\锁描述.png)
