jvm虚拟机:
举一个例子:
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通过四字节的地址,引用该实例。
6.JVM看到person.name="java的架构师技术栈";person通过引用new Person实例的name属性,该name属性通过地址指向常量池的“java的架构师技术栈”
7.JVM看到person.age=18;person的age属性是基本数据类型,直接赋值
8.JVM烂到person.walk();调用实例的方法时,并不会在实例对象中生成一个新的方法,而是通过地址指向方法区中类信息的方法。