class文件运行过程

class文件运行过程

当源文件(.java文件)被编译成.class文件,且经过合法检测后,.class的运行过程如下:
依图中FirstStatic.class文件为例:
1)FirstStatic.class文件首先进入方法去,将.class文件中的静态的东西放入静态区属于类,只有一个),将非静态方法放入非静态区。
2)当主方法main中生成对象时,我们首先在堆里开辟一块区域用来放对象FirstStatic(),然后对非静态属性赋值。(静态属性早在静态区就赋过初值了)
3)方法的调用实际就是压栈的过程,调用静态方法时,将静态方法压入栈内,调用非静态方法时,将非静态方法压入栈内。(区别在与静态方法是在.class文件进入后就生成了,只有一个,调用时需考虑线程;非静态方法调用时,在生成对象之后,是在非静态方法中有一个方法镜像,不同对象调用时,通过镜像压入栈内不是同一个方法。)

※ 注:
先后顺序为:
1)静态的东西最先进入(直接存在了静态区)
2)匿名代码块
3)构造器(隐式默认无参构造器)生成对象赋值

猜你喜欢

转载自blog.csdn.net/qq_42857603/article/details/81627780
今日推荐