java的运行流程是什么_Java程序运行整体流程是什么

Java程序运行整体流程是什么

发布时间:2020-07-06 13:47:52

来源:亿速云

阅读:102

作者:清晨

这篇文章将为大家详细讲解有关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由对象引用找到堆中的对象,再由对象持有的引用定位到方法区中类的类型信息的方法表,从而获得待调用函数的字节码的地址。

开始执行调用的函数。

注:public和protected的实例方法采用动态绑定机制:要用到方法表。

private,static,构造器和初始化方法采用静态绑定机制:不需要方法表。

关于Java程序运行整体流程是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值