一图读懂Java架构:
1,Java 类加载过程
类加载过程
2,Java 内存分区
方法区
堆区
虚拟机栈区
程序计数器
本地方法栈
后三个都是线程私有
3,Java执行引擎
解释器 + JIT实时编译 +垃圾回收
尽管并不是所有的Java虚拟机都采用解释器与编译器并存的架构,但许多主流的商用虚拟机(如HotSpot),都同时包含解释器和编译器。
解释器与编译器两者各有优势:当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行。在程序运行后,随着时间的推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码之后,可以获取更高的执行效率。当程序运行环境中内存资源限制较大(如部分嵌入式系统中),可以使用解释器执行节约内存,反之可以使用编译执行来提升效率。此外,如果编译后出现“罕见陷阱”,可以通过逆优化退回到解释执行。
HotSpot虚拟机中内置了两个即时编译器:Client Complier和Server Complier,简称为C1、C2编译器,分别用在客户端和服务端。用Client Complier获取更高的编译速度,用Server Complier 来获取更好的编译质量。
垃圾回收器的介绍