您的位置:首页 > 编程语言 > Java开发

程序的加载流程

2017-03-27 15:19 141 查看
代码如下:

class ThisClass{
String name;
Integer age;
public void printThis(){
System.out.println("ThisClass本次调用对象的地址为:\t\t\t"+this);
}

}

class Test{
public static void main(String[] args){
ThisClass thisClass = new ThisClass();
thisClass.printThis();
System.out.println("ThisClass在main方法创建的对象的地址为:\t\t"+thisClass);
}
}

程序的加载流程如下:
1、执行Test类时,先装载Test到JVM中,并把main方法放入方法区

2、发现有ThisClass类的对象,先把ThisClass加载到JVM虚拟机中,发现拥有printThis方法,将printThis放到方法区中

3、在堆中开辟一块空间创建ThisClass对象,在栈中压入thisClass变量并将其引用地址指向在堆中创建的ThisClass地址,并给其属性初始化

4、将printThis压入栈中,并把thisClass的地址赋值给this,打印this,执行完毕后,将printThis出栈,this消失 

5、运行输出语句,并将thisClass对像的地址输出

6、main方法执行完成,将thisClass、this.printThis()、输出程序出栈(注意出栈顺序是先进后出)

7、将main方法出栈

8、因thisClass对象已经没有变量引用,所以会被GC垃圾回收器不定时回收销毁
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息