jvm解析三(JVM规范<上>)

Java虚拟机可以看做是一台抽象的计算机,跟其他计算机类似有自己的指令集合以及各种运行时内存区域。简单的讲它的作用就是:正确的读取Class文件中的每一条指令,并且能够正确的执行这些指令所蕴含的操作即可。
[b]一:JVM结构图[/b]
[img]http://dl.iteye.com/upload/attachment/0068/9286/b48ce2ed-6535-3cae-8cfe-d4b3bce455b2.png[/img]
主要包括两个子系统和两个组件: Class loader(类装载器) 子系统,Execution engine(执行引擎) 子系统;Runtime data area (运行时数据区域)组件, Native interface(本地接口)组件。
[b]Class loader子系统[/b]的作用 :根据给定的全限定名类名(如 java.lang.Object)来装载class文件的内容到 Runtime data area中的method area(方法区域)。Javsa程序员可以extends java.lang.ClassLoader类来写自己的Class loader。
[b]Execution engine子系统[/b]的作用 :执行classes中的指令。任何JVM specification实现(JDK)的核心是Execution engine, 换句话说:Sun 的JDK 和IBM的JDK好坏主要取决于他们各自实现的Execution engine的好坏。每个运行中的线程都有一个Execution engine的实例。
[b]Native interface组件[/b] :与native libraries交互,是其它编程语言交互的接口。
[b] Runtime data area 组件[/b]:这个组件就是JVM中的内存。
Runtime data area 主要包括五个部分:Heap (堆), Method Area(方法区域), Java Stack(java的栈), Program Counter(程序计数器), Native method stack(本地方法栈)。Heap 和Method Area是被所有线程的共享使用的;而Java stack, Program counter 和Native method stack是以线程为粒度的,每个线程独自拥有。
[b]二:数据类型[/b]
与Java程序语言一样jvm有自己的数据类型,主要分为2类:原始类和引用类,但是定义存储方式跟java有些区别,所有的操作必须按照jvm规范的指令进行,具体的分析看下图
[img]http://dl.iteye.com/upload/attachment/0068/9284/8afe013d-0ca1-3309-8277-f24794568e23.png[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值