总结下今天的内容,并画了个图(三连三连!三连可以加快更新速度!):
- Java跨平台因为有JVM屏蔽了底层操作系统
Java源码到执行的过程,从JVM的角度看可以总结为四个步骤:编译->加载->解释->执行
- 「编译」经过 语法分析、语义分析、注解处理 最后才生成会class文件
- 「加载」又可以细分步骤为:装载->连接->初始化。装载则把class文件装载至JVM,连接则校验class信息、分配内存空间及赋默认值,初始化则为变量赋值为正确的初始值。连接里又可以细化为:验证、准备、解析
- 「解释」则是把字节码转换成操作系统可识别的执行指令,在JVM中会有字节码解释器和即时编译器。在解释时会对代码进行分析,查看是否为「热点代码」,如果为「热点代码」则触发JIT编译,下次执行时就无需重复进行解释,提高解释速度
- 「执行」调用系统的硬件执行最终的程序指令
《对线面试官》系列目前已经连载26篇啦!有深度风趣的系列!
- 【对线面试官】Java注解
- 【对线面试官】Java泛型
- 【对线面试官】 Java NIO
- 【对线面试官】Java反射 && 动态代理
- 【对线面试官】多线程基础
- 【对线面试官】 CAS
- 【对线面试官】synchronized
- 【对线面试官】AQS&&ReentrantLock
- 【对线面试官】线程池
- 【对线面试官】ThreadLocal
- 【对线面试官】CountDownLatch和CyclicBarrier
- 【对线面试官】为什么需要Java内存模型?
- 【对线面试官】Java从编译到执行,发生了什么?
- 【对线面试官】List
- 【对线面试官】Map
- 【对线面试官】SpringMVC
- 【对线面试官】Spring基础
- 【对线面试官】SpringBean生命周期
- 【对线面试官】Redis基础
- 【对线面试官】Redis持久化
- 【对线面试官】Kafka基础
- 【对线面试官】使用Kafka会考虑什么问题?
- 【对线面试官】MySQL索引
- 【对线面试官】MySQL 事务&&锁机制&&MVCC
- 【对线面试官】MySQL调优