您的位置:首页 > 其它

JVM从入门到基础(一) 一JVM介绍

2017-11-20 20:40 309 查看

JVM从入门到基础 一JVM介绍

一 概念

JVM是JAVA Vittual Machhine的简称,意为Java虚拟机。JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。常见的虚拟机有VMWare,Visual Box,JVM。

JVM使用软件模拟JAVA字节码的指令集。



二 JVM规范

JAVA语言规范定义了什么是JAVA语言,而JVM主要定义了二进制class文件和JVM指令集等。JAVA语言与JVM相对独立。

JVM定义了Class的文件格式

JVM数字的内部存储和表示范围–Byte -128 to 127 (-2^7 to 2^7 - 1)

定义相应的数据类型、堆、栈、方法区。

JVM中整数的表示用原码、补码、反码。

原码:第一位为符号位(0为整数,1位负数)

反码:符号位不动,原码取反。

负数补码:符号位不动,反码加1。

正数补码:和原码相同。

为什么使用补码?,对于0而言,如果用原码表示0,正数的0位00000000,负数的0位10000000,这样的表示有歧义,但是对于0的补码而言,正数的0为00000000,负数的0为0的补码11111111加1结果为00000000,这样的表示没有歧义。

同时补码能够很好的参与二进制运算,例如-6+5换算成补码的话为11111010+00000101=11111111换算成原码的话结果为-1,又如-4+5=11111100+00000001=00000001=1,还如-3+5=11111101+00000101=00000010=2。这样使用补码在计算机内部计算,可以直接以补码在计算机内部以加法方式进行运算,同时符号位参加运算,即可得到相应的结果。​

VM 指令集

类型转化:l2i

出入栈操作 aload astore

运算 iadd i sub

流程控制 ifeq ifne

函数调用 invokevirtual invokeinterface invokespecial invokestatic



JVM需要对JAVA library提供以下支持:

反射 java.lang.reflect

ClassLoader

初始化class和interface

安全相关 java.security

多线程

弱引用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: