走马观花了解jvm spec

本文旨在深入理解Java,重点探讨JVM的结构、数据类型、运行时数据区、方法调用、异常处理、同步机制等内容,解析ClassFile结构、方法描述符和常量池,以及JVM指令集和退出条件。
摘要由CSDN通过智能技术生成

目的

  • 深入理解java,学习了解,本文记录一些个人认为有用的一些知识点

1.2 Java虚拟机

  • Java虚拟机与Java语言并没有必然的联系,它只与特定的二进制文件格式——Class文件格式所关联,Class文件中包含了Java虚拟机指令集(或者称为字节码、Bytecodes)和符号表,还有一些其他辅助信息。

2 Java虚拟机结构

  • 如果只是要去“正确地”实现一台Java虚拟机,其实并不如大多数人所想的那样高深和困难——只需要正确读取Class文件之中每一条字节码指令,并且能正确执行这些指令所蕴含的操作即可。

2.2 数据类型

  • 与Java程序语言中的数据类型相似,Java虚拟机可以操作的数据类型可分为两类:原始类型(Primitive Types,也经常翻译为原生类型或者基本类型)和引用类型(Reference Types)。虚拟机中使用reference类型①来表示对某个对象的引用,reference类型的值读者可以想象成类似于一个指向对象的指针。

2.3.4 boolean类型

  • 虽然Java虚拟机定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,在Java语言之中涉及到boolean类型值的运算,在编译之后都使用Java虚拟机中的int数据类型来代替。

2.5 运行时数据区

  • 见文后博客解析

2.11.8 方法调用和返回指令

  • 以下四条指令用于方法调用:
    “`
    invokevirtual指令用于调用对象的实例方法,根据对象的实际类型进行分派(虚方法分派),这也是Java语言中最常见的方法分派方式。
    invokeinterface指令用于调用接口方法,它会在运行时搜索一个实现了这个接口方法的对象,找出适合的方法进行调用。
    invokespecial指令用于调用一些需要特殊处理的实例方法,包括实例初始化方法(§2.9)、私有方法和父类方法。
    invokestatic指令用于调用类方法(static方法)。

而方法返回指令则是根据返回值的类型区分的,
包括有ireturn(当返回值是boolea

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值