javaJVM简介

什么是JVM
JVM(Java Virtual Machine)是一个抽象的计算机,和实际的计算机一样,它具有指令集并使用不同的存储区域,它负责执行指令,还要管理数据、内存和寄存器。
简单来说,JVM就是一个虚拟计算机。我们都知道Java语言其中的一个特性就是跨平台的,而
JVM就是Java程序实现跨平台的关键部分。Java编译器编译Java程序时,生成的是与平台无关
的字节码(也就是*.class文件),所谓的平台无关是指编译生成的字节码无论是在Window、
Linux、Mac系统都是可执行。也就是说Java编译生成的*.class文件不是面向平台的,而是面
向JVM的。不同平台上的JVM都是不同的,但是他们都是提供了相同的接口。图一为Java的大
致运行步骤:
java虚拟机有以下几个特点
(1)
java虚拟机只和class文件关联,所以只要你编写程序的语言能够编译成class文件,那么都能够在Java虚拟机上运行。
(2)
它可以跨平台
也就是说Java是一个跨平台的语言,那么Java是如何实现跨平台的呢?

其实Java之所以跨平台是因为Java虚拟机的适配,不同的系统实现不同的Java虚拟机。Java虚拟机就相当于操作系统和应用程序之间的中介,每种平台安装适应该平台的Java虚拟机,那么我们编写的程序自然能够在任意平台运行。

其实java提供一个完美的解决方案来解决跨平台的问,那就是针对不同的版本信息提供几个主流系统的java虚拟机来解决这个跨平台的问题下面一张图来简单的概括一下
在这里插入图片描述

java虚拟机体系结构

java虚拟机由五个部分组成:一组指令集、一组寄存器、一个栈、一个无用单元收集堆一个方法区域。

寄存器

寄存器的话有一下四种

程序记数寄存器:跟踪程序执行的准确位置
堆栈指针寄存器:指示操作栈项
框架寄存器:指向当前执行的环境
变量寄存器:指向当前执行环境中第一个本地变量

Java虚拟机的栈有三个区域:局部变量区、本地方法区、操作数区。

局部变量区

局部变量表存放了编译器可知的各种基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(引用指针,并非对象本身),

本地方法区

本地方法栈用于支持本地方法(native标识的方法,即非Java语言实现的方法)。

虚拟机栈和本地方法栈,当线程请求分配的栈容量超过JVM允许的最大容量时抛出StackOverflowError异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值