java 对象创建过程_java创建对象过程详解

63b4a5d519f1075245863171478ba908.png

jvm虚拟机:

351b7512375ccef8704efa08cdfae6b8.png

举一个例子:

public 

分析过程:

1.JVM去方法区寻找Test类的代码信息,如果有直接调用,没有的话使用类加载机制加载进来。同时把静态变量、静态方法、常量加载进来。

2.JVM进入main方法,看到Person person=new Person()。首先分析Person这个类,同样的寻找Person类的代码信息,有就加载,没有的话加载机制加载进来。同时也加载建泰变量、静态方法、常量。

3.JVM接下来看到person,person在main方法内部,因而是局部变量,存放在栈空间中。

4.JVM接下来看到了new Person()。new出的对象(实例),放在堆空间中。

5.JVM接下来看到“=”,把new Person的地址告诉person变量,person通过四字节的地址,引用该实例。

b2ffee0902a1364023210abd0aaf9b3c.png

6.JVM看到person.name="java的架构师技术栈";person通过引用new Person实例的name属性,该name属性通过地址指向常量池的“java的架构师技术栈”

7.JVM看到person.age=18;person的age属性是基本数据类型,直接赋值

8.JVM烂到person.walk();调用实例的方法时,并不会在实例对象中生成一个新的方法,而是通过地址指向方法区中类信息的方法。

参考:

java创建对象的过程详解(从内存角度分析)​baijiahao.baidu.com
9b5d0a991b7dbf612c1ad72105e41b7b.png
深入解析Java反射(1) - 基础​www.sczyh30.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值