JVM处理兼容具体措施的分析
来源:互联网 发布:淘宝举证是什么意思 编辑:程序博客网 时间:2024/06/07 05:23
JVM是处理平台无关性的重要的基础,是解决平台差异性最主要的手段,在解决兼容性问题上,它采用了那些措施,原因是什么?
措施1:采用虚拟机执行引擎体系结构由自己实现,并不是基于实际的处理器、指令集和操作系统上
原因:基于自行定义的虚拟执行引擎可以做到封装底层多变的细节,保证统一的引擎外观。底层多别的细节封装有具体的JVM来处理。
措施2:在class字节码文件中,对文件中数据长度的定义采用虚拟单位Slot作为基准
原因:可以根据实际安装JVM的机器来确定每个虚拟单位的大小,延迟了确定class文件中数据在物理上的大小,保证了在没有确定物理大小之前可以基于虚拟单位Slot进行程序的编写,这个地方有设计思想当中依赖抽象的味道。
措施3:class文件与具体物理处理器、操作系统、指令集的映射进行统一的处理,保证JVM映射出class文件的内存模型是正确的
原因:JVM的主要任务有两个:一个是做兼容处理;二是做统一处理的class文件加载到JVM内存的处理流程。class文件的统一处理流程有:加载、验证、准备、解析、初始化、使用、卸载。加载、验证、准备、初始化、卸载这五个阶段是顺序确定的。因为在class文件存在引用其他class文件的情况,所以在解析、使用时可能会牵扯到没有加载过的class文件。这个统一的处理流程是JVM兼容处理的相互依存的一面。
对于仅想对JVM了解一些概况或者是简单了解一些具体的大略上的原理,到此处即可。
措施4:双亲委派模型是JVM的一个很重要的特点,可以很好的保证JVM对class文件的识别。但是在一些情况下是可以破坏这个模型的,这个到底是怎么回事?
原因:双亲委派模型是当一个classLoader收到加载类文件的任务是,它不会立即进行加载,而是先转给父类的classLoader,只有当父类的classLoader完不成加载任务的时候,子类的classLoader才会执行加载工作。具体例子是:一个JVM上可能要加载多个project,但是有的文件是可以共用的,有的不可以,于是就需要进行启动不同的classLoader,有的classLoader需要加载共用的,有的只能加载单独project使用的。Tomcat下部署project的文件结构可以详细的展示双亲委派模型。破坏双亲委派模型的有JNDI,JDBC等。
- JVM处理兼容具体措施的分析
- outerHTML的兼容处理
- JVM内部对String类型的处理分析
- 简单的jvm分析
- 浏览器兼容的事件处理
- JVM对类的处理
- JVM对类的处理
- 内存分析方法和JVM的java heap space问题处理
- 网站兼容 360的IE8兼容模式处理方式
- 提高中职数学活动课教学实践水平的具体措施
- JRuby 1.0发布:实现JVM对Ruby的兼容
- jvm 的GC日志分析
- jvm的GC日志分析
- jvm的GC日志分析
- JVM的GC日志分析
- 主流JVM的组成分析
- jvm的GC日志分析
- jvm的GC日志分析
- 循环链表c语言实现 circlelinklist.h 和 circlelinklist.c
- 火车出站
- 循环从终端输入整数,在循环体中求出奇数的个数以及偶数的个数,当输入值为0时循环退出
- 【codeforces 747A】Display Size
- 浅谈ARP协议
- JVM处理兼容具体措施的分析
- Qt 多线程之间的通信 实例 emit
- 计算二进制数中1的个数
- python之decode、encode及codecs模块
- Centos7安装mysql
- Linux安装,连接,删除FTP服务器(常用FTP命令)
- (水仙花数问题)假设100
- 结构体内存大小的求法(内存对齐)&&c++类大小同样适用
- ping 原理与ICMP协议