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