Java程序执行的三个阶段:
1.编译
Java程序的源代码需要经过编译器(例如javac-)的编译,将其转换成字节码(即.class文件),这个过程称为编译。编译器会对源代码中的语法进行检查和优化,并生成可在JVM上运行的字节码文件。
2.类加载
当Java程序启动时,JVM就会创建一个类加载器Q(ClassLoader)树来加载所有的类。类加载器负责在运行时将类的字节码文件加载到内存中,并创建对应的Class对象。类加载器会按照一定的顺序加载类,通常是先由系统类加载器(AppClassLoader)加载本地路径下的类,如果找不到则由扩展类加载器(ExtClassLoader)加载,最后由启动类加载器(BootstrapClassLoader)加载JRE中的核心类。
3.执行
在加载完成后,JVM会执行main方法。
4.垃圾回收
在Java程序执行过程中,JVM需要管理内存,包括分配、使用和释放内存。当一个对象不再被引用时,JVM会通过垃圾回收机制将其回收并释放内存。垃圾回收器会定期扫描堆内存中的对象,标记不再被引用的对象为垃圾对象,然后清理掉这些对象所占用的内存空间。
执行的过程
- 源文件由编译器编译成字节码(Bytecoed)。Java源代码编译成字节码( .class) 文件。是Java的第一次编译。生成的这个 .class文件就是可以到处运行的文件。
- .class字节码文件转换成目标机器语言代码,有JVM(Java虚拟机)执行引擎来完成。
- JVM依赖于操作系统进行处理后返回代码执行之后的结果到控制台(console)。 注意:Java拥有跨平台的特性, JVM依赖操作系统运行,但Java的运行结果与操作系统无关,意思是根据不同的操作系统安装对应的jvm,从而实现Java的跨平台性。
- 执行的流程如下图所示: