这是第一篇在CSDN的博客,毕竟这是一个面向技术人才的平台,所以还是以技术分享为主,其实更多的是在学习技术过程中的记录和总结,不想使学习到的东西扭头就忘掉。
思考了一下,还是以java虚拟机的专题开始吧。其实写虚拟机的文章还是挺多的,但绝大部分的内容都是高度重合的,所以,在这里,想写点不同的东西。
Java虚拟机其实有很多或者曾经出现过很多产品,主要包括Sun官方的HotSpot(是JDK中所带的虚拟机,主要面向服务器和桌面领域),还有面向移动和嵌入式市场的Sun Mobile-Embeded VM,BEA JRocket和IBM的J9 VM,以及Apache Harmony和Android内置的Dalvik VM,甚至微软曾经也开发过Microsoft JVM等等。他们都为java语言的发展贡献了自己的力量,无论是否还在,我们有理由向那些当年开发过java虚拟机的技术人才致敬!
本系列文章以HotSpot为例来逐一介绍Java虚拟机的内部原理,为方便叙述,姑且将HotSpot VM作为Java虚拟机。其实,每一个合格的Java程序员都应该了解甚至掌握Java虚拟机的原理,因为只有那样,你才能突破应用层面的瓶颈,向高性能迈出一大步。
首先,HotSpot是用C/C++实现的,包括以下几个目录:agent,make.src和test。其中src为HotSpot VM的源代码,同时这一目录也为最大目录,包括操作系统(os)、CPU(cpu)相关代码和平台无关的共同代码(share)和核心代码(vm)。我们最关注也最需要学习的部分就是vm核心代码部分,该部分主要有以下几大模块:编译器(.ad文件编译器,Client,Server,JIT),解释器、GC、管理工具和运行时支持库等。
了解Java虚拟机的文件结构的意义在于深入Java VM内部从代码层面来看待其实现,但对于Java新手或对Java虚拟机不了解的人意义不大,我们必须在方法论的基础上实践才能发挥出最大的主观能动性。
第一篇CSDN的博客就是这样,希望我能坚持下去。Happy Hoding!