Flask接口签名sign原理与实例代码浅析
305
2022-12-02
简单了解Java程序运行整体流程
概述
java程序从创建源文件到程序运行要经历两个主要步骤:
源文件 编译器编译> 字节码文件(ByteCode)。
字节码文件 JVM解释运行> 在内存中运行
Java程序从编译到运行
示例程序:
public class ClassA{
public static void main(String[] args){
ClassB b = new ClassB("b");
b.method();
}
}
class ClassB{
private String name;
public ClassB(String name){
this.name = name;
}
public void method(){
System.out.println("ClassB method()");
}
}
编译
源文件被编译成.class文件。
若一个类所依赖的类还没有编译,则先编译被依赖的类,然后引用。
若已编译,则直接引用。
若找不到指定类的文件,则抛出cannot find symbol错误。
编译后生成的字节码文件由两部分组成:
常量池:代码中的所有token(类名,成员变量名)和符号引用(方法引用,成员变量引用)
方法字节码:类中各个方法的字节码。
运行
Java类的运行过程:
类的加载
类的执行
注:
JVM在程序第一次主动使用类的时候才加载类,而不是一开始将所有的类都加载到内存中,只加载一次。
详细步骤:
系统启动一个JVM进程,JVM从classpath路径中查找对应的字节码文件,将对应的类信息加载到运行时数据区的方法区内(类的加载)。
JVM找到类的主函数入口,执行main函数。
若需创建对象,而方法区没有该类的信息,则加载对应的类,并把类信息放入方法区。
加载所需的类后,JVM在堆区中为实例对象分配内存,并调用构造函数初始化实例。(该实例有指向方法区对应类的类信息的引用)
当调用实例的方法时,JVM由对象引用找到堆中的对象,再由对象持有的引用定http://位到方法区中类的类型信息的方法表,从而获得待调用函数的字节码的地址。
开始执行调用的函数。
注:
public和protected的实例方法采用动态绑定机制:要用到方法表。
private,static,构造器和初始化方法采用静态绑定机制:不需要方法表。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~