博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java虚拟机基础
阅读量:5292 次
发布时间:2019-06-14

本文共 1165 字,大约阅读时间需要 3 分钟。

Java虚拟机基础

JVM是Java Virtual Machine的缩写。JVM是一个可以将Java字节码转换成机器语言并能被机器(电脑)执行的Java字节码处理引擎。Java字节码是处于Java和机器之间的语言,当其被JVM转化成机器语言时就能被机器执行。

 

JVM简单介绍

首先简单介绍下Java字节码、JVM以及机器的概念。

当一个Java程序被创建后,后缀为.java的文件也就被创建了。该文件包含多个属性,包括类、方法、对象等等。后缀为.java的文件接着会被Java编译器编译,从而产生后缀为.class的文件(也称为Java字节码文件)。JVM会阅读并理解这个.class文件并将其解释为机器语言,从而能执行这个文件

 

JVM这个平台是独立的吗?

Java是平台不独立的因为它需要JVM,虽然JVM是平台独立的。可以运行Java代码的机器上必须要先安装好JVM。在能执行Java字节码的机器上,JVM会解释.class文件并且产生不同的只能被机器理解的机器语言。不同的机器上可能有着不同的操作系统, 例如:Windows、Mac OS、Unix或者Linux。如果机器上没有安装JVM的话,这些操作系统是不能解释Java字节码的,因为一个操作系统只能理解机器语言。JVM将Java字节码转化成机器语言并让它能被操作系统理解和执行。这意味着Java可以运行在任何机器上,前提是该机器上安装了JVM。

 

JVM的组成

当解释和执行Java字节码的时候,JVM使用了多个组件,例如:栈、寄存器、垃圾回收器等等。接下来让我们对它的组件有个初步的认识:

栈:它是方法的参数和本地变量的仓库。它可以被指向不同区域的寄存器熟练控制。

寄存器:在JVM中有许多寄存器,比如Vars(指向当前执行环境中第一个局部变量的指针)、Frame(当前环境指针)、PC(程序计数器)和OpTop(操作数栈顶指针)。Vars寄存器指向正在被当前方法使用的本地变量。frame寄存器指向当前执行环境,也就是栈的环境。OpTop寄存器指向运算栈,字节码的指令在这里执行。程序计数器寄存器指向保存字节码的方法区。所有寄存器均为32位。PC用于记录程序的执行。optop,frame和vars用于记录指向Java栈区的指针。

• 方法区:它是保存Java字节码的地方。该区域能被所有线程共享,因此能确保线程同步。 

• 垃圾回收器:它是JVM真正保存Java对象的组件。需要注意的是,Java对象的引用是保存在栈中的,而真正的对象在垃圾回收器中。Java使用垃圾回收机制来释放内存并分配给不同的对象,不像C/C++那样要使用运算符来释放内存。

 
 

 

转载于:https://www.cnblogs.com/stm32stm32/p/6433278.html

你可能感兴趣的文章
高中地理思维导图(浙江省学考专用)
查看>>
MySQL---Mybatis 批处理(增,改,删)
查看>>
Date相关处理
查看>>
三种List集合的遍历方式
查看>>
对List集合中的对象进行按某个属性排序
查看>>
MySql查询当天、本周、本月、本季度、本年的数据
查看>>
dashboard安装
查看>>
heapset水平自动扩容
查看>>
mysql explain用法和结果的含义
查看>>
处理Mybatis返回的结果集为Map类型
查看>>
无法恢复master数据库。SQL Server 无法运行
查看>>
无法打开数据库‘Data’.恢复操作已将数据库标记为SUSPECT。
查看>>
活久现
查看>>
asp.net mvc中配置全局异常过滤器
查看>>
B/S神思SS628(100)身份证阅读器开发
查看>>
Do What you want
查看>>
IPv6 关于路由器配置静态IPv6路由的命令
查看>>
查看linux 用户登录信息及ip
查看>>
Linux系统测试端口连通性的方法
查看>>
联想think system sr550信息
查看>>