project/jvm/JVM内存模型JMM.md

1.2 KiB
Raw Blame History

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

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

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

java -XX:+PrintCommandLineFlags -version

什么样的对象要被GC

判断回收算法

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

对象头内存分配