28 lines
1.2 KiB
Markdown
28 lines
1.2 KiB
Markdown
|
大对象,新生代存储不下的对象,分配担保直接到老年代。
|
|||
|
|
|||
|
1. 年龄超过15
|
|||
|
2. 相同年龄超过50%
|
|||
|
3. 动态年龄分配,不同年龄特别多。
|
|||
|
4. 内存担保,新生代垃圾回收无法完成,直接放入老年代。 **在GC前还会进行一次判断,如果要分配的内存>=Eden区大小的一半,那么会直接把要分配的内存放入老年代中。否则才会进入担保机制。**
|
|||
|
|
|||
|
TLAB的全称是Thread Local Allocation Buffer,即线程本地分配缓存区,这是一个线程专用的内存分配区域。
|
|||
|
|
|||
|
java -XX:+PrintCommandLineFlags -version
|
|||
|
|
|||
|
什么样的对象要被GC
|
|||
|
|
|||
|
判断回收算法
|
|||
|
|
|||
|
- 引用计数法,相互引用,循环引用
|
|||
|
- 可达性分析,GCroot(本地变量表引用对象,用来关联对象关系、方法区中的静态变量和常量,虚拟机栈中本地变量表(局部变量),static成员,常量引用,本地方法栈中变量,类加载器,Thread)。
|
|||
|
- 不可达对象,finalize可以挽回一次防止回收。
|
|||
|
- 本地方法栈中JNI引用的对象
|
|||
|
|
|||
|
### 对象头内存分配
|
|||
|
|
|||
|

|
|||
|
|
|||
|

|
|||
|
|
|||
|

|