JVM虚拟机概述

JVM虚拟机概述JVM 虚拟机是一个抽象机器 提供一个可以执行 Java 字节码的运行环境规范 JVM 可以用于许多硬件和软件平台

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


一、JVM是什么?

  1. 指定Java虚拟机的工作规范,实现提供程序是独立的选择算法,由Sun公司等提供。
  2. 实现被称之为JRE,Java运行环境。
  3. 运行实只要在命令提示符上编写Java命令来运行Java类,就会创建一个JVM实例。

二、JVM虚拟机可以做什么?

JVM执行以下操作:

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

JVM提供了以下定义:

  • 内存区
  • 类文件格式
  • 寄存器集合
  • 垃圾收集GC
  • 致命错误报告等等。

JVM虚拟机内部体系结构

  • 装入过程由类装载器Class Loader完成,类装载器负责装入运行一个程序需要的所有代码,包括程序代码的类的所有继承类和被调用类,当类装载器装入一个类时候,该类就存入自己的命名空间中。除了通过符号引用自己命名空间以外的类,类之间没有办法可以影响其他类。
  • 本台计算机的所有类都在同一个地址空间内,而所有从外部引进的类,都会有一个自己独立的名字空间,这会使得本地类通过共享相同类名字空间获得较高效率,同时保证外部引进类不会互相影响。
  • 全部装入所需类之后,解释器便可以确定整个可执行程序的内存布局,解释器为符号引用同特定的地址空间建立对应关系和查询表。通过这一阶段确定代码的内存布局,Java很好的解决了由超类改变而引起子类崩溃的问题,防止代码对地址的非法访问。
  • 最后,被装入的代码由字节码校验器验证,校验器可以发现操作数栈溢出,非法数据类型转换等等多种错误,通过校验之后,就可以开始执行。

类加载器

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

类(方法)区域

类方法区域存储每一个类结构,例如运行时的常量池,、字段和方法数据、方法代码等等。

这个是分配对象的运行时数据区。

堆栈

程序计数器寄存器

PC-程序计数器寄存器,它包含当前正在执行Java虚拟机指令的地址。

本地方法堆栈

它包含应用程序所使用的所有本地方法。

执行引擎

执行引擎包含:

  1. 虚拟机处理器
  2. 解释器:读取字节码流,然后执行指令。
  3. 即时JIT编译器:用于提高性能,JIT编译同时类似字节码代码部分的功能,从而减少编译所需要的时间。编译器是指从Java虚拟机指令集到特定CPU指令集的转换器。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222691.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午3:12
下一篇 2026年3月17日 下午3:12


相关推荐

  • JS设置定时器和清除定时器

    JS设置定时器和清除定时器JS 设置定时器和清除定时器 nbsp nbsp 在做项目中难免会碰到需要实时刷新 动画依次出现等等需求 这时候就需要定时器登上我们的代码舞台了 所以今天我们就先来了解一下 JS 定时器的设置和清除吧 一 启用定时器 nbsp nbsp window 对象提供了两个方法来实现定时器的效果 分别是 window setTimeout 和 window setInterval 其中前者可以使一段代码在指定时间后运行 而后者则可以使一

    2026年3月19日
    2
  • Visio 2019 专业版安装教程

    Visio 2019 专业版安装教程参考 Visio2019Pro 激活方法 爱码网 likecs com 在记事本中输入下面内容 保存为 bat 文件 名字随意 echoofftitle amp cls amp echo amp echo Visio ActivatingMi

    2026年3月17日
    1
  • ce修改器怎么用 ce修改器使用基础教程[通俗易懂]

    ce修改器怎么用 ce修改器使用基础教程[通俗易懂]这篇文章是教大家CE修改器的使用方法,教程简单易学,有需要的小伙伴就赶紧和小编一起来学习一下吧。我们先下载并打开,下载地址:点击前往然后打开隐藏.隐藏CE修改器接着进入您玩的游戏这时我们进游戏后打开CE的最左上边的小电脑“文件”菜单-“打开进程”-打开MAIN进程(M开头有数字的)然后输入你当前的敏捷如:555(在HEX栏输入)接着我们点首次搜索.弄好后左边出现一大堆(RP好的只有一个,跳到9步)加几点敏捷,再输入你当前的敏捷如:558点再次搜索这次只有一个数据了,双击它,它会出现在下面

    2025年6月21日
    4
  • 腾讯混元3D-Omni、混元3D-Part发布并开源

    腾讯混元3D-Omni、混元3D-Part发布并开源

    2026年3月12日
    2
  • linux 误删文件恢复_centos删除的文件能恢复吗

    linux 误删文件恢复_centos删除的文件能恢复吗本文参考http://write.blog.csdn.net/postedit?ticket=ST-491405-OGjDDusZeyMgVQ7bHW7f-passport.csdn.net前言作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过……

    2022年8月21日
    9
  • U盘量产检查闪存编码失败_北信源安全u盘忘记密码

    U盘量产检查闪存编码失败_北信源安全u盘忘记密码没什么特殊的想法就是看自己很久没有更新关于题解类的文章了而已(其实这是我好久之前做的,只是把它从洛谷博客搬到了这里而已)题目首先分析题目要二分他长成这个亚子太二分了所以就要二分最好是先排一下序吧这样我们在输入的时候就能顺便处理出l和r的值,考虑我们二分的是一个接口的大小,所以我们的答案肯定是在最大的接口和最小的接口之间啊,所以这样做是可…

    2022年10月12日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号