JVM总结-体系结构
来源:互联网 发布:势不可挡网络剧 编辑:程序博客网 时间:2024/06/02 02:30
JVM体系结构
JVM的基本组成
(1)指令集:JVM指令集
(2)类加载器:在jvm启动时或者类在运行时将需要的class加载到JVM中
(3)执行引擎:负责执行class文件中的字节码指令,相当于CPU
(4)运行时数据区:将内存划分成若干个区,分别完成不同的任务
(5)本地方法区:调用C或C++实现的本地方法代码返回的结果
类加载器ClassLoader
会在下一篇文章中详细说明ClassLoader加载机制。每一个被JVM装载的类型都有一个与之对应的Java.lang.Class类的实例来表示该类型。该实例可以唯一表示被jvm装载的class类,这个实例和其他类的实例一样放在堆内存中。
执行引擎
执行引擎相当于线程,是JVM的核心,执行引擎的作用就是解析JVM字节码指令,得到执行的结果。执行引擎由各个厂家实现。SUN的hotspot是一种基于栈的执行引擎。而Android的Dalvik是基于寄存器的执行引擎。执行引擎也就是执行一条条代码的一个流程,代码都包含在方法体中,执行引擎本质上就是执行一个个方法串起来的流程,对应于操作系统的一个线程,每个java线程就是一个执行引擎的实例。- java内存管理
执行引擎在执行的过程中需要存储一些东西,如操作数,操作码执行结果,class类的字节码以及类的对象等信息都需要在执行引擎执行前准备就绪。JVM有一个方法区,java堆区,java栈,PC寄存器和本地方法区。其中方法区和java堆是线程共享的。如果当前线程对应的java栈中没有栈帧,这个java栈也要被JVM撤销,整个JVM退出。
JVM选择基于栈的架构的原因
JVM执行字节码指令是基于栈的架构的,所有的操作数必须先入栈,然后根据指令的操作码选择从栈顶弹出若干个元素进行计算后再将结果入栈。JVM操作数可以存放在每一个栈帧中的一个本地变量中,即每个方法调用时就会给这个方法分配一个本地变量集,这个本地变量集在编译时就已经确定,所以操作数入栈可以直接是常量或者从本地变量集中娶一个变量压入栈中。 JVM基于栈的设计理由是 (1)JVM要设计成与平台无关的,而平台无关性就要保证在没有或者由很少的寄存器的机器上也能同样正确执行java代码,因为寄存器很难做到通用。 (2)基于栈的理由是为JVM更好地优化代码而设计的 (3)为了指令的紧凑性,因为java代码可能在网络上传输,所以class文件的大小也是设计JVM字节码指令的一个重要因素。
0 0
- JVM总结--JVM体系结构
- JVM总结-体系结构
- JVM总结(1)----JVM体系结构
- JVM体系结构
- jvm体系结构
- JVM体系结构
- JVM 体系结构
- JVM 体系结构
- JVM体系结构
- JVM体系结构
- jvm体系结构
- JVM-体系结构
- JVM体系结构
- JVM学习总结--体系结构、内存管理和垃圾回收
- JVM解读(一):JVM体系结构
- Inside JVM体系结构详解
- jvm的体系结构
- [jvm]体系结构 内存模型
- 算法学习之一—乱序数组
- Android JNI打包so文件到apk
- CSS(5)工具-reset
- 公钥和私钥的完全解释(包括对称算法和非对称算法、RSA解释)
- angular 更改显示与绑定数据格式转换
- JVM总结-体系结构
- linux 安装 jdk maven svn
- 深入Spring:自定义注解加载和使用
- 微信公众号监控返回按钮
- 搞定css3的动画(一)
- 关于PHOG特征
- hex6x.exe的使用
- 在一个Activity中两个llistView共存的问题
- 一篇博客让你了解RxJava