Java程序执行流程

Java程序执行的整个过程可以分为三个阶段:编译、加载和运行

1.编译

Java程序的源代码需要经过编译器(例如javac)的编译,将其转换成字节码(即.class文件),这个过程称为编译。编译器会对源代码中的语法进行检查和优化,并生成可在JVM上运行的字节码文件。

2.类加载

当Java程序启动时,JVM就会创建一个类加载器(ClassLoader)树来加载所有的类。类加载器负责在运行时将类的字节码文件加载到内存中,并创建对应的Class对象。类加载器会按照一定的顺序加载类,通常是先由系统类加载器(AppClassLoader)加载本地路径下的类,如果找不到则由扩展类加载器(ExtClassLoader)加载,最后由启动类加载器(BootstrapClassLoader)加载JRE中的核心类。

类加载器会执行以下三个步骤:

  • 装载:查找并加载字节码文件;
  • 链接:对字节码文件进行验证、准备和解析;
  • 初始化:对类进行初始化,包括执行类的static块(如果有)和类变量的赋值。

3.执行

在加载完成后,JVM会执行main方法。具体执行过程如下:

  • 创建主线程;
  • 将main方法所在类的字节码文件装载到JVM内存中;
  • 执行该类的static代码块(如果有);
  • 如果该类有父类,依次执行其父类的static代码块(如果有);
  • 执行main方法。

在执行main方法时,JVM将会按照程序员编写的语句依次执行,在执行完毕后,程序结束。

4.垃圾回收

在Java程序执行过程中,JVM需要管理内存,包括分配、使用和释放内存。当一个对象不再被引用时,JVM会通过垃圾回收机制将其回收并释放内存。垃圾回收器会定期扫描堆内存中的对象,标记不再被引用的对象为垃圾对象,然后清理掉这些对象所占用的内存空间。

有关垃圾回收机制可以参考我的另一篇博客:JVM内存回收机制_源末coco的博客-CSDN博客

你可能感兴趣的:(java,jvm,开发语言)