JVM 初识

JAVA 跨平台

  1. java 编译成 class 文件
  2. 不同操作系统有不同的 jre 环境,不同操作系统的 jre 都能读取同一份 class 文件

jre 包含 jvm,所以 java 跨平台是因为不同操作系统有对应的 jvm 实现的

JDK、JRE、JVM

  1. JDK:Java Development Kit,开发 java 程序的完整套件,包含 JRE

  2. JRE:Java Runtime Environment,运行 Java 应用程序所需的环境,包含 JVM

  3. JVM:Java Virtual Machine,java 虚拟机,执行 java 程序

JDK 包罗万象,自己的电脑就安装 JDK 就好了,不用安装 JRE;如果是服务器,只需要运行 java 程序,只安装 JRE 就好了

Class 文件

  1. java 文件经过前端编译器(比如 javac)而来
  2. 包含魔数、Class文件版本、常量池等部分
  3. jvm 会读取 class 文件,并在内存中生成一个对应的 Class 实例
组成部分 作用 描述
魔数 当前16 进制文件是否是一个合法的 java class 文件,在文件开头 一个合法的 class 文件开头是 ca fe ba be
Class 文件版本 确定当前 class 文件是哪个版本的编译器编译的 jdk 向下兼容:1.8 编译的 class,1.7 就不能解释,1.9 可以 51 - jdk1.752 - jdk1.853 - jdk1.9
常量池 存放这个类的 所有具体信息,比如字符串常量,方法返回值,这个 class 文件 import 了哪些类等 可以理解为这个 class 文件的资源库
访问标识 访问修饰符
类索引、父类索引、接口索引集合 当前类、父类和实现的所有接口
字段表集合 成员变量信息 几个成员变量,类型等
方法表集合 方法信息 访问标识,方法体(编译后的),参数列表,返回值类型等
属性表集合

常量池:不仅仅是字符串常量,而是这个 class 文件的所有信息,比如成员变量的类型、方法的入参列表、方法的返回值类型、访问修饰符等等

字节码指令

  1. Class 文件经过后端编译器编译而来,由操作数+操作码构成,根据用途大致分为 9 类,常见的指令系列比如 store、load、push、invoke 等

    加载与存储、算术、类型转换、对象创建与访问、方法调用与返回、操作数栈管理、控制转移、异常处理、同步控制

  2. 最终的指令和 Class 字节码顺序可能不一样(指令重排),字节码指令是 CPU 能识别和调用的

posted @   CyrusHuang  阅读(100)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示