小公司: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调优
![](https://filescdn.proginn.com/e6e4fcac2cf6cbca7c97336ce3fb4f66/cce74674c180fc1754cdcab75fef8b37.webp)
![](https://filescdn.proginn.com/0e5426fcb27594b6f83023ca8d4814c6/6b24789b100ff5b475ebde5b1123ec2e.webp)
![](https://filescdn.proginn.com/733726bf3c05c14858220f1c7b407999/8f8b8a4cdad94ebe89a019f3f4a0fed9.webp)
![](https://filescdn.proginn.com/a25c5ba7298670e2b7cde3ec1a365ebd/d1f97fb7eb991171c524f8f4cc93d6ed.webp)
![](https://filescdn.proginn.com/822f65c8e14cbedfbd0830b8af93dda1/9b4ff79f5d173f8fd86b0b3796b06eda.webp)
![](https://filescdn.proginn.com/854b056a7ce51ae3492b48d86b000ab2/a0e0f7157c91f1a49aaccc6655fdfccf.webp)
![](https://filescdn.proginn.com/8287d5af3d67a78399fbb4049dd42571/b5e9a591ee6a51e465e2bc94d01e68b7.webp)
![](https://filescdn.proginn.com/1decdc9351a2d32c2d022a0f976206a5/3f029c3e72b3124e1da06253a71d5ac0.webp)
![](https://filescdn.proginn.com/9ba7df2ce02f312fef142d108de42469/d8fb62aa9054323d1418843cbbce71b8.webp)
![](https://filescdn.proginn.com/d4ce883e8e89b79387822017941b58fd/629964c5d2250ebc686f472ecca75cbf.webp)
![](https://filescdn.proginn.com/68f11cd10dcea9c72398ffad4e4b3f02/0ac2a49671314b8f3f4c112fd9ba06a6.webp)
![](https://filescdn.proginn.com/80214d5344d6de0152372d6580015416/6c6ad234088e26be1717987e5ae13315.webp)
![](https://filescdn.proginn.com/fd08992ec8f2707f8c7d8e547b88a19a/8d5e0cd7fb76634e4aecb6ad41bce1a6.webp)
总结下今天的内容,并画了个图(三连三连!三连可以加快更新速度!):
-
Java跨平台因为有JVM屏蔽了底层操作系统 -
Java源码到执行的过程,从JVM的角度看可以总结为四个步骤:编译->加载->解释->执行 -
「编译」经过 语法分析、语义分析、注解处理 最后才生成会class文件 -
「加载」又可以细分步骤为:装载->连接->初始化。装载则把class文件装载至JVM,连接则校验class信息、分配内存空间及赋默认值,初始化则为变量赋值为正确的初始值。连接里又可以细化为:验证、准备、解析 -
「解释」则是把字节码转换成操作系统可识别的执行指令,在JVM中会有字节码解释器和即时编译器。在解释时会对代码进行分析,查看是否为「热点代码」,如果为「热点代码」则触发JIT编译,下次执行时就无需重复进行解释,提高解释速度 -
「执行」调用系统的硬件执行最终的程序指令
![](https://filescdn.proginn.com/6b7d1881e1f981241f2fcb5e4dd8fdd0/3efc8b4b0bc2765b31ea0944ab040146.webp)
文章以纯面试的角度去讲解,所以有很多的细节是未铺垫的。
鉴于很多同学反馈没看懂【对线面试官】系列,基础相关的知识我确实写过文章讲解过啦,但有的同学就是不爱去翻。
我把这些上传到网盘,你们有需要直接下载就好了。
![](https://filescdn.proginn.com/206f7e5f7e1f0299b746eea178467a31/f4130fddd439dbaacaff92a52572d60b.webp)
扫码关注【面试造火箭】
评论