Java虚拟机内部体系结构

JVM(Java虚拟机)是一个抽象机器。 它是一个提供可以执行Java字节码的运行时环境的规范。JVM可用于许多硬件和软件平台(即JVM是平台相关的)。

什么是JVM?
JVM(Java虚拟机)是:

指定Java虚拟机的工作的规范。 但实现提供程序是独立的选择算法。 其实现是由Sun和其他公司提供。

它的实现被称为JRE(Java运行时环境)。

运行时实例只要在命令提示符上编写java命令来运行java类,就会创建JVM的实例。

JVM(Java虚拟机)能做什么?
JVM执行以下操作:

加载代码
验证代码
执行代码
提供运行时环境

JVM提供了以下定义:
内存区
类文件格式
寄存器集合
垃圾收集堆
致命错误报告等

JVM(Java虚拟机)内部体系结构
下面让我们来了解JVM的内部架构。它包含类加载器,内存区域,执行引擎等。
下面的JVM中运行中的内存分区以及执行过程。

在这里插入图片描述
1)类加载器

Classloader是JVM的一个子系统,用于加载类文件。

2)类(方法)区域

类(方法)区域存储每个类结构,例如运行时常量池,字段和方法数据,方法的代码。即包含静态变量、方法,静态变量与方法是属于类本身的

3)堆

它是分配对象的运行时数据区。
1.引用类型(引用类型意思是指需要被栈区变量引用着的类型,如对象这类)总是被分配到“堆”上。不论是成员变量(就是指类的成员变量)还是局部变量(就是指在方法中定义的)。
2.基础类型总是分配到它声明的地方:成员变量在堆内存里,局部变量在栈内存里。(也就是说如果new了一个对象,对象执行其中的方法,方法中定义的基础类型变量不是在栈区的,而是在堆区的)

4)堆栈
Java堆栈存储帧。它保存局部变量和部分结果,并在方法调用和返回中起作用。
每个线程都有一个私有JVM堆栈,同时创建线程。每次调用方法时都会创建一个新的框架。 框架在其方法调用完成时被销毁。

5)程序计数器寄存器

PC(程序计数器)寄存器。 它包含当前正在执行的Java虚拟机指令的地址。可以理解成记住当前执行倒代码的哪一行,因为线程会被CPU切换调度的,所以需要记住当前执行到当前线程的哪一句

6)本地方法堆栈

它包含应用程序中使用的所有本地方法。就是指包含所有的实例方法。

7)执行引擎

执行引擎包含:
虚拟处理器:按照流程执行
解释器:读取字节码流(内存中的),然后执行指令(执行jvm指令然后执行native指令)。
即时(JIT)编译器:用于编译成native指令,它用于提高性能,JIT编译的同时有类似字节代码部分的功能,从而减少编译所需的时间。编译器是指从Java虚拟机(JVM)的指令集到特定CPU的指令集的转换器。

在Java中,类可以理解成模板,用模板去生成不同的实例,每个实例都有类所定义的变量、方法。类是具有共同属性的一组对象。它是创建对象的模板或蓝图。它是一个逻辑实体。
Java中的类可以包含:
字段
方法
构造函数
代码块
嵌套类、接口、继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值