JVM - 【对象实例化过程】6个阶段
程序员文章站
2022-05-24 21:09:21
...
对象实例化过程 - 六个阶段
- 加载类元信息至"方法区"
- 在堆中分配内存
- 内存规整
- 内存不规整
- 处理并发问题
- 加锁
- 设置TLAB(Thread Local Allocation Buffer)
- -XX:+UserTLAB
- -XX:TLABWasteTargetPercent=1%
- 默认赋值
- 成员变量赋默认值
- < clinit >
- 设置对象头信息
- 显式初始化
- 成员变量
- 代码块
- 构造函数(< init >)
一:显式初始化阶段
package xyz.xx.chapter10;
/**
* 变量初始化顺序测试
*
* XiaoMing
* 30
* false
* 40
*/
public class VariableInitialTest {
public static void main(String[] args) {
User u = new User();
System.out.println(u.name);
System.out.println(u.age);
System.out.println(u.sex);
System.out.println(u.x);
}
}
/**
* 类加载的6个阶段
* 加载类元信息
* 分配内存
* 内存规整
* 内存不规整
* 处理并发(TLAB)
* -XX:+UseTlab
* -XX:TLABWasteTargetPercent=1%
* 默认初始化
* 设置对象头信息
* 显式初始化
*
* 显式初始化顺序
* 1. 显式初始化
* 2. 代码块中初始化
* 3. 构造函数中初始化 <init>
*/
class User{
public User(){
age = 30;
x = 40;
}
static{
x = 10;
}
{
x = 30;
age = 20;
}
static int x = 0;
String name = "XiaoMing";
int age = 10;
boolean sex = false;
}
二:对象头信息(Header)
参考文章
:JVM -【对象内存布局】3部分
上一篇: 你必须了解的企业网站建设4个步骤
下一篇: 个人站长如何赚钱 选好种子、执行、收获