概述
1.编译期:
词法分析→语法分析→语义分析→代码生成。
词法分析:
读入字符→组成词素→生成词法单元序列→分析序列。
词法分析:
扫描程序→获取源代码(几号形式)→语法分析(定义程序结构元素及其关系)→绘制语法树。
语义分析:
分析静态语义(声明和类型检查)→添加额外信息(“注释”或“装饰”到语法树,属性添加到符号表)。
代码生成:
生成中间代码→生成目标代码。
2.运行期:
加载→连接(验证→准备→解析)→初始化→使用→卸载
加载:
(获取或动态编译出).class文件的二进制数据→读入内存(运行时的数据区的方法区内)→在堆区创建java.lang.Class对象(封装类的方法区内数据结构)。
验证:
类文件结构检查(固定格式)→语义检查(语法规定)→字节码验证(静态方法,实例对象)→二进制兼容性的验证(引用类之间协调一致)。
准备:
(jvm对类的静态变量)分配内存→设置初始值。
解析:
(jvm把二进制数据的)符号引用→直接引用。
归纳:编译时不知道实际地址,是符号引用;执行时是实际地址,是直接引用。
初始化:
jvm执行初始化语句→为静态变量赋予初始值。
位置:静态变量声明处;静态代码块。
使用:
程序运行过程。
卸载:
涉及GC。无引用对象被回收。
3.机器码:
概念:学名机器语言指令,也被称为原生码。
机器码是CPU可以直接解读的数据,也是执行最快的指令。由0和1构成,直观性差晦涩难懂,指令种类非常多,出错概率大,编写时间远远超过执行时间。一般是计算机研发工程师直接接触和使用,不太常见于其他开发领域。
4.字节码:
概念:是一组包含执行程序,由op代码和数据对组成的二进制文件。
字节码是一种中间状态的二进制代码。它比机器码更为抽象,需要直译器转译后才能生成机器码的中间代码。
字节码与平台无关,它是通过编译器和虚拟机实现的。编译器将源码编译成字节码,虚拟机将字节码转译为所在平台需要的执行代码(机器码)。典型应用为Java bytecode。
最后
以上就是干净草莓为你收集整理的java编译期、运行期、字节码和机器码自整理1.编译期:2.运行期:3.机器码:4.字节码:的全部内容,希望文章能够帮你解决java编译期、运行期、字节码和机器码自整理1.编译期:2.运行期:3.机器码:4.字节码:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复