面试_java_Java程序执行过程

138 阅读2分钟

Java程序从源文件创建到程序运行要经过两大步骤:

  • 编译期,编译器把 .java 源代码文件编译成 .class 字节码文件,放到磁盘上。
  • 运行期,Java类加载器将 .class 字节码文件加载到内存,在 JVM 中进行解释并生成可执行代码(机器码),交给计算机执行,直到程序运行结束。(类的加载和类的执行)



一、编译期

编译期分配内存只是说编译期会在生成代码时产生一些指令,根据这些指令可以知道内存分配的大小;在运行代码时才通过这些指令真正把程序所需的内存分配好。

在编译期,将java代码翻译为字节码文件的过程经过了四个步骤,词法分析,语法分析,语义分析,代码生成四个步骤。

注意,字节码文件可以来自本地,也可以在网络上获取,也可以实时生成。就是说你可以跳过写java代码阶段,直接生成字节码交由JVM执行。




二、运行期

类加载

1 加载

类加载是运行期的开始。JVM不是一开始就把所有的类都加载进内存,而是只有第一次遇到某个需要运行的类时才会加载,且只加载一次。


2.1 验证

主要是为了保证加载进来的字节流符合虚拟机规范,不会造成安全错误。包括文件格式、元数据(语法)、字节码、符号引用 四个方面的验证。

2.2 准备

主要是为类变量分配内存,并且赋予 初值

2.3 解析

将运行时常量池内的符号引用替换为字符串池中直接引用的过程。


3. 初始化

也是对类变量的初始化?????



类执行

4. 使用

程序运行过程


5. 卸载

对于不被引用的对象,适时调用垃圾回收算法进行回收。




www.cnblogs.com/myitnews/p/… zhuanlan.zhihu.com/p/33509426