JVM - 骨架篇
计算机架构的本质,是在有限资源的约束下,通过一系列精妙的权衡,来追求极致的性能。在冯·诺伊曼体系下,CPU(中央处理器)、内存(Memory)、输入输出设备(I/O,磁盘),这三样构成了计算机硬件系统的最核心的闭环。任何想实现高性能、高稳定的程序,都必须将这三大核心资源的利用率和特性纳入设计考量,忽略其中一个任何一项,都可能导致程序出现瓶颈、延迟和崩坏。JVM架构也必须围绕这三大核心资源来设计,好消息是,JVM无需直接操作这些硬件,而是通过操作系统提供的抽象层来间接的管理它们。
在JVM诞生篇里面,我们说詹姆斯·高斯林为解决C/C++的一些问题,引入了三大特性:可移植性、安全性和健壮性、简单性。我们从可移植性、安全性和健壮性出发,来看看JVM是如何实现的。
可移植性
为了解决可移植性,java采用中间语言的形式来实现,这个中间语言就是字节码(Class文件)。也就是说,JVM只认字节码,任何形式的高级语言,只要能够编译成字节码文件,符合java虚拟机规范,都能够被JVM所读取运行。由于计算机三大件间运行速度的巨大鸿沟,而编写好的Class文件,存储在磁盘上(或远程服务器),如果每次需要一个类的信息都去磁盘上获取,严重影响性能。此时内存就登场了,把已经加载过的Class文件信息保存在内存中,后续再使用时,直接从内存获取,而无需去磁盘加载。保存Class文件内容信息的地方就是方法区。
方法区(Method Area)
JVM的"信息中心",存放了关于类本身的元数据(MetaDate),包括如下内容:
类型信息:是每个被加载的类的"蓝图"或"元数据"。JVM需要这些信息来准确知道如何实例化对象、如何调用方法。包

最低0.47元/天 解锁文章
728

被折叠的 条评论
为什么被折叠?



