JVM(一)

一、初始JVM

1.1 初始JVM

JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。

机器码是由二进制编码表示的计算机指令。每个机器码通常对应一个特定的操作,如加法、乘法、跳转等。机器码是计算机能够直接执行的代码,它可以在计算机的内存中存储和执行。

计算机通过将机器码加载到CPU中执行,进行各种操作和运算。机器码是计算机的最底层指令,它由一系列的二进制位组成,每个位表示不同的含义,如操作码、寄存器地址、内存地址等。

 1.2 JVM的功能

字节码需要在JVM中解释执行,相比直接翻译成机器码会有一定的性能损失,但是优点所带来的好处使得Java在跨平台开发和安全编程中得到广泛应用。

以下是Java采用字节码的优点:

  1. 可移植性:字节码是一种与平台无关的中间代码,它可以在任何支持Java虚拟机(JVM)的操作系统上运行。只要目标平台上有JVM,就可以将字节码加载并执行,无需修改源代码。这种可移植性使得Java成为一种跨平台的编程语言。

  2. 安全性:字节码在执行之前需要经过JVM的安全检查。JVM可以对字节码进行类加载、字节码验证、安全检查等操作,确保字节码不会直接对底层系统造成损害。这种安全性机制可以防止恶意代码对计算机系统造成破坏。

  3. 高级开发环境:Java的编译器将源代码翻译成字节码后,开发人员可以利用丰富的开发工具和环境进行调试、测试和优化。开发人员可以进行实时的代码修改和调试,提高开发效率。

  4. 跨语言互操作性:由于字节码是一种中间代码,它可以与其他语言的中间代码相互转换、调用和交互。这意味着可以在Java程序中使用其他语言编写的模块和库,或者将Java程序的字节码转换成其他语言的可执行形式。

1.3 常见jvm

 常见的JVM有HotSpot、GraalVM、OpenJ9等,另外DragonWell龙井JDK也 提供了一款功能增强版的JVM。其中使用最广泛的是HotSpot虚拟机

二、字节码文件详解

 2.1 字节码文件的组成

2.1.1 字节码文件打开方式

字节码文件中保存了源代码编译之后的内容,以二进制的方式存储,无法直接用记事本打开阅读。

使用jclasslib插件可以打开

 2.1.2 字节码文件的组成

 2.1.2.1 魔数
  1. 文件是无法通过文件扩展名来确定文件类型的,文件扩展名可以随意修改,不影响文件的内容。
  2. 软件使用文件的头几个字节(文件头)去校验文件的类型,如果软件不支持该种类型就会出错。
  3. Java字节码文件中,将文件头称为magic魔数

 

  2.1.2.2 主副版本号
  1. 主副版本号指的是编译字节码文件的JDK版本号,主版本号用来标识大版本号;副版本号是当主版本号相同时作为区分不同 版本的标识,一般只需要关心主版本号。
  2. 版本号的作用主要是判断当前字节码的版本和运行时的JDK是否兼容。

 

上述问题就是当前jdk版本为1.6,但是字节码文件为1.8.因此编译错误

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/104740.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VSCode 开发 Vue 语法提示

一. 打开应用商店,搜索 vetur ,选择第一个,点击安装。 二. 安装完成后,还可以下载 Vue Language Features 解决代码警告的问题。 最后重启 VSCode 就可以使用啦。另外输入 按回车键还可以自动生成 vue 代码格式哦。 原创作者&…

2023年中国高尔夫球杆市场供需现状及趋势,量身定制会逐渐成为一种趋势[图]

随着高尔夫运动的发展,高尔夫球杆也在不断更新。20世纪80年代是高尔夫球杆设计与发展的黄金时期,大部分经典的球杆都是从这个时期被设计发明出来。高尔夫球杆的技术革新主要集中在杆头上,通过杆头的变化来提高和改善击球的效果。对应不同击球…

ATGM336H-5N一款高性能BDS/GNSS全星座定位导航模块

功能 概述 ATGM336H-5N系列模块是9.7X10.1尺寸的高性能BDS/GNSS全星座定位导航模块系列的总称。该系列模块产品都是基于中科微第四代低功耗GNSS SOC单芯片- -AT6558, 支持多种卫星导航系统,包括中国的BDS (北斗卫星导航系统),美国的GPS,俄罗斯…

【Andriod】使用adb命令安装和卸载apk的通用python脚本

文章目录 1.前言2.连接设备3.从本机通过adb安装apk4.从本机通过adb卸载apk 1.前言 如不会使用adb请看之前的文章 【Andriod】adb调试安卓手机时连接真机或模拟器的3种方法,你知道么? 2.连接设备 import os # python标准库中的os模块""&qu…

更加轻松处理相同文件名!覆盖复制操作全新升级,避免重复命名!

亲爱的用户,您是否在进行覆盖复制操作时,常常因为相同的文件名而无法正常完成任务?现在,我们为您推出了全新的覆盖复制升级版,让您更加轻松处理相同文件名,避免重复命名的尴尬局面! 首先第一步…

【23真题】四电四邮、专业课最简单的!

先科普下四电四邮有哪些:北邮、南邮、西邮、重邮、西电、成电、桂电、杭电 其中北邮、重邮、西电、成电,难度必须在第一梯队,毕竟大浪淘金,没点难度,没法筛人。南邮考通信原理,这里不做横向比较。桂电考信…

正确部署Baichuan2(Ubuntu20.4) 步骤及可能出现的问题

部署其实是不太复杂的,但实际上也耗费了接近2-3天的时间去不断的设置 1 硬件配置信息 采用esxi 虚拟化的方式将T4 卡穿透给esxi 种的ubuntu20.4虚拟机 CPU给到8 core 内存至少32GB以上 T4卡是16GB 2 预先准备OS环境 这里使用的是ubuntu20.4版本,esxi中需要设置uefI启动方…

99%的时间里使用的14个git命令

学习14个Git命令,因为你将会在99%的时间里使用它们 必须了解的命令整理 1,git init 初始化一个新的Git仓库。 这将在当前目录中创建一个名为".git"的子目录,Git会将所有仓库的元数据存储在其中。 2,git clone 克隆…

用低代码平台代替Excel搭建进销存管理系统

目录 一、用低代码平台搭建系统 1.需求调研 2.基于痛点梳理业务流程 3.低代码实现 (1)基础资料模块 (2)采购管理模块 (3)销售管理模块 (4)库存管理模块 (5&…

u-boot 通过 SD 卡启动 Linux(三)

u-boot 移植 linux 运行 linuxSD卡(rootfs) 运行 u-bootSD卡(kerneldtbrootfs) 前面单独介绍了 u-boot 的移植,linux 移植和 rootfs 根 文件系统的制作。本节主要通过将前面的串起来介绍 u-bootSD卡(kerneldtbrootfs)启动 linux。 根文件系统制作 cd rootfscp -r…

QT QProcess的使用

定义 The QProcess class is used to start external programs and to communicate with them. QProcess类是用来启动一个外部程序并与之通信。 本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(Qt实战项目视频教程代码,…

EG网关串口连接台达PLC

EG网关串口连接台达PLC 前言:台达PLC是一款国产优秀的可编程控制器,广泛应于工业控制领域,是一款性能高,运行稳定的控制器。此次我们要把台达DVP-ES系列PLC通过modbus驱动连接到EMCP物联网云平台(简称EMCP)…

论文-分布式-分布式计算|容错-分布式控制下的自稳定系统

参考文献Self-stabilizing systems in spite of distributed control可以把松散耦合的 循环序列过程 间的同步任务,看成是要保持一个这样的不变性:“系统要处于一种合法状态”因此每个进程在运行每一个可能会改变不变性的步骤之前都要先检查一下是可以执…

轻松批量剪辑:将MP4视频转换为FLV格式

在视频制作和编辑领域,批量剪辑和格式转换是非常常见的操作。将MP4视频转换为FLV格式,可以帮助我们更好地管理和发布视频内容。本文将介绍云炫AI智剪如何轻松批量剪辑,将MP4视频转换为FLV格式,帮助您提高工作效率,减少…

高防CDN:保卫您的网站免受攻击之利与弊

在当今数字化时代,网络安全对于网站经营者至关重要。高防CDN(Content Delivery Network)技术旨在提供强大的安全性,以保护网站免受恶意攻击。本文将探讨高防CDN为普通网站带来的优势与不足之处,并分析国内外高防CDN的发…

在C代码中找到栈顶的位置并访问栈空间

任务目标 在主循环中写一个任务,检查栈是否溢出。 思路 先找到任务的栈顶位置。在初始化时在栈顶位置写一个标志,运行过程中及时检查该标志是否被改写。如果标志位改变了,则判断为栈溢出。 问题 在RTOS中,任务的栈空间是自己分…

Jmeter(十四):跨线程组传递jmeter变量及cookie的处理详解

setUp线程组 setUp thread group 一种特殊类型的线程组,用于在执行常规线程组之前执行一些必要的操作。 在 setup线程组下提到的线程行为与普通线程组完全相同。不同的是执行顺序--- 它会在普通线程组执行之前被触发; 应用场景举例: A、测…

项目中拖拽元素,可以使用html的draggable属性,当然也可以用第三方插件interact

项目中拖拽元素&#xff0c;可以使用html的draggable属性&#xff0c;当然也可以用第三方插件interact 一、安装二、引用三、使用 一、安装 npm install interactjs二、引用 import interact from interactjs三、使用 <div class"drag_box"> &…

如何公网远程连接本地群晖NAS中的WebDAV

文章目录 1. 在群晖套件中心安装WebDav Server套件1.1 安装完成后&#xff0c;启动webdav服务&#xff0c;并勾选HTTP复选框 2. 局域网测试WebDav服务2.1 下载RaiDrive客户端2.2 打开RaiDrive&#xff0c;设置界面语言可以选择中文2.3 点击添加按钮&#xff0c;新建虚拟驱动区2…

品牌媒介工作流程是什么,媒体投放目标怎么做?

品牌媒介其实说简单也很简单&#xff0c;说难也很难&#xff0c;简单在于其实事情流程简洁&#xff0c;难呢&#xff0c;在于很多东西如果不亲身体验是无法领悟到精髓的。今天为大家分享下品牌媒介工作流程是什么&#xff0c;媒体投放目标怎么做&#xff1f; 我们怎么才能在媒体…