JVM-Java Virtual Machine(Java虚拟机)为我们分配三块重要的内存空间,栈内存,堆内存以及方法区。
一、创建对象的过程
第一步:javac将Test.java源文件编译成Test.class字节码文件-在磁盘中进行。(有main方法的先)
第二步:Test.class文件加载进方法区。
第三步:Test.class文件加载进方法区的时候,main主函数就要压进栈内存了。
第四步:javac将Person.java源文件编译成Person.class字节码文件-磁盘中进行。(无main方法后)
第五步:JVM将Person.class字节码文件加载进方法区
第六步:以类为模板创建对象Person person=new Person()在堆内存中开辟一块空间。
注意:这片空间本来就是有地址的。内存中只是提供一块地址,不一定代表它就是是无名地。
二、引用对象成员方法和成员变量原理(基于创建对象后)
第七步:main方法内创建一个叫做sun的句柄(虚拟地址),并把对象的地址传递给它。
第八步:调用run方法,给num传递1000。
第九步:run方法出栈(栈:先进后出)
第十步:main方法出栈
如此图所示: