https://github.com/waylau/java-virtual-machine-specification 一、程序的执行流程https://docs.oracle.com/javase/specs/jls/se11/html/jls-12.html1. 加载(load)找到二进制数据,load到内存2. 链接(link)Verify, 检查数据格式,符号表, Prepar
(这些知识都是在学习java反编译的过程当中涉及到的。由于java虚拟机规范晦涩难懂,硬着头皮读下去。连蒙带猜,勉强理解一部分,可能 很多地方理解的不正确或者不够好,还请老师指正) java虚拟机,顾名思义。它不是一种物理计算机。与其他虚拟机一样,java虚拟机是在物理计算机上面用软件模拟的方式来实现类似计算机的功能的抽象计算机。但是java虚拟机并不是一个软件,而是一系列规范
说明:(1)简单介绍JVM规范,了解JVM规范是什么东西;目录1.JVM规范,简介;2.JVM规范,涵盖了哪些内容;(PS:虚拟机规范没必要过于深究,了解即可)虚拟机一定要有规范(或称标准),比如class文件如果没有一定的规范的话,虚拟机就无法认识这个class;1.JVM规范,简介;(1)虚拟机不认识.java文件,其只认识.class文件;      &nbsp
2.3.2 浮点数类型和值集合,值 浮点数类型有浮点数和双精度数,它们在概念上与IEEE754的值和操作的规范的标准的32位单 精度以及64位的双精度有关联。       IEEE754标准不仅包括了正负的有符号的数还有正负的零,正负的无穷大,一个特定的不是数值的值。 这个不是数值的数被用来表示特定的无效的操作例如除数是0。 java虚拟
转载 2023-09-04 17:58:32
58阅读
##虚拟机 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。 虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有真实windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响 ,而且具有能够在现有系统与虚拟
2.7 对象的表示  java虚拟机并不要求对象满足任何特定的内部结构。  在Oracle的一些Java虚拟机实现中,对类实例的引用是指向句柄的指针,该句柄本身是一对指针:一个指向包含对象方法的表和指向表示Class对象的指针对象的类型,另一个是从堆为对象数据分配的内存。2.8 浮点算法  Java虚拟机包含IEEE二进制浮点运算标准(ANSI / IEEE Std.754-1985,New Yo
转载 2023-08-02 12:50:32
64阅读
如果你还没下载《Java虚拟机规范》这本书,那么先点击这里下载再一块儿看吧。前言Java 虚拟机是一个抽象化的机器,整个规范中提及的 Java 虚拟机都是抽象化的概念,而不是特指 Oracle 或者其他某一间公司的 Java 虚拟机实现。可以看到JVM其实就是一个虚拟机的机器,与我们的普通PC一样,有内存、有CPU。JVM的内存就是运行时数据区,其CPU就是Java虚拟机指令集。另外,我们还修正了
工作过一段时间才发现不用"管他是怎么实现的"这些话都是狗p,以下是看 Java虚拟机规范(Java SE 7) 笔记和思考,个人也觉得先看规范在学习深入理解等系列会更容易,节约篇幅具体定义不抄了第一章简介 jvm:只与特定的二进制文件格式(class)有关联,java硬件无关性与操作系统无关的关键部分 实现:HotSpot,jrockit,ibmJvm等 简单的说,实
规范描述的是一种抽象化的虚拟机的行为,而不是任何一种(译者注:包括 Oracle 公司自己的 HotSpot 和 JRockit 虚拟机)被广泛使用的虚拟机实现。记住:JVM规范是一种高度抽象行为的描述,而不是具体虚拟机的实现。所有在虚拟机规范之中没有明确描述的实现细节,都不应成为虚拟机设计者发挥创造性的牵绊,设计者可以完全自主决定所有规范中不曾描述的虚拟机内部细节,例如:运行时数据区的内存如何
2.2节 《Java虚拟机规范(JavaSE7版)》规定Java虚拟机管理的内存包括以下几个运行时数据区域:    1. 程序计数器 线程私有,内存空间较小,可看做当前线程执行字节码(分支、循环、跳转、异常处理、线程恢复)的行号指示器 若执行Java方法则计数器记录字节码指令地址,若执行Native方法则计数器为Undefined 无OutOfMamaryError情况 2.
# Java 8虚拟机规范 Java 8是Java语言的一个重要版本,其中引入了许多新特性和改进。在Java编程中,Java虚拟机(JVM)扮演着至关重要的角色,它负责将Java字节码翻译成机器代码并执行程序。Java 8虚拟机规范定义了JVM的工作原理和规则,为开发人员提供了必要的指导。 ## JVM数据结构 在Java虚拟机中,有许多不同的数据结构用来存储和管理程序运行时所需的信息。其中
原创 2月前
18阅读
前言java虚拟机java跨平台的基石,本文的描述以jdk7.0为准,其他版本可能会有一些微调。引用java虚拟机规范数据类型java总共有两种数据类型:基本类型和引用类型。java虚拟机的设计目标是期望在运行前执行类型识别,并且通过编译器识别而不是jvm虚拟机本身。具体的类型如下所示: 基本类型: numeric,如int、float、double等boolean,实际上boolean类型与i
转载 2023-07-23 14:58:54
84阅读
方法调用的四条指令: 1)invokevirtual 2)invokeinterface 3)invokespecial (指令用于调用一些需要特俗处理的实例方法,包括实例初始化方法、私有方法和父类方法); 4)invokestatic Java虚拟机可以支持方法级的同步和方法内部一段指令序列的同步,这两种同步结构都是使用管程(Moni
# 教你如何实现Java虚拟机规范PDF 作为一名刚入行的开发者,你可能对Java虚拟机(JVM)规范感到好奇,甚至想要实现它。Java虚拟机Java语言的核心组件,它允许Java程序在不同的平台上运行。本文将指导你如何实现一个简单的Java虚拟机规范PDF。 ## 步骤概览 首先,让我们通过一个表格来概览整个实现流程: | 步骤 | 描述 | | --- | --- | | 1 | 理
原创 1月前
8阅读
java虚拟机的原理所谓虚拟机,就是一台虚拟的机器。它是一款软件,用来执行一系列虚拟计算机指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机,大名鼎鼎的Visual Box、VMare就属于系统虚拟机,他们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。程序虚拟机典型代表就是Java虚拟机,它专门为执行单个计算机程序而设计,在java虚拟机中执行的指令我们成为java字节码指令。无
Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地
如果你还没下载《Java虚拟机规范》这本书,那么先点击这里下载再一块儿看吧。前言Java 虚拟机是一个抽象化的机器,整个规范中提及的 Java 虚拟机都是抽象化的概念,而不是特指 Oracle 或者其他某一间公司的 Java 虚拟机实现。可以看到JVM其实就是一个虚拟机的机器,与我们的普通PC一样,有内存、有CPU。JVM的内存就是运行时数据区,其CPU就是Java虚拟机指令集。另外,我们还修正了
转载 2023-09-09 09:39:29
38阅读
第一章 引言(略)第二章 Java虚拟机结构2.1 class文件格式中立:平台无关性,实现依赖于二进制格式的数据形式把文件持久化在class文件内,且精确的定义了类与接口的表现形式,尤其是与平台相关的模板文件格式上的一些细节惯例,比如SPARC平台上数字以Big-Endian 高位的字节存储在内存中的低地址值处形式存储,在X86平台上数字则是以Little-Endian 高位的字节存储在内存中的
7263 6546 696c 6501 0009 4465 6d6f 2e6a6176 610c 0007 0008 0700 170c 0018 00190100 0b48 656c 6c6f 2057 6f72 6c64 07001a0c 001b 001c 0100 0444 656d 6f01 00106a61 7661 2f6c 616e 672f 4f62 6a65 63740100
Class文件之中每一条字节码指令,并且能正确执行这些指令所蕴含的操作即可。所有在虚拟机规范之中没有明确描述的实现细节,都不应成为虚拟机设计者发挥创造性的牵绊,设计者可以完全自主决定所有规范中不曾描述的虚拟机内部细节,例如:运行时数据区的内存如何布局、选用哪种垃圾收集的算法、是否要对虚拟机字节码指令进行一些内部优化操作(如使用即时编译器把字节码编译为机器码)。  Java虚拟机应有的共同
转载 2023-09-04 22:54:57
39阅读
  • 1
  • 2
  • 3
  • 4
  • 5