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会通过垃圾回收机制将其回收并释放内存。垃圾回收器会定期扫描堆内存中的对象,标记不再被引用的对象为垃圾对象,然后清理掉这些对象所占用的内存空间。文章来源:https://www.toymoban.com/news/detail-477366.html
有关垃圾回收机制可以参考我的另一篇博客:JVM内存回收机制_源末coco的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-477366.html
到了这里,关于Java程序执行流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!