JVM 数据类型

作者: 我犟不过你 | 来源:发表于2020-12-01 14:42 被阅读0次

    参考:https://blog.csdn.net/antony1776/article/details/89843145

    在jvm中,数据分为原始类型引用类型(Reference)

    原始类型

    Java虚拟机支持的原始数据类型是数字类型boolean类型和returnAddress 类型。

    数字类型:由整数类型浮点类型组成。

    整数类型为:

    • byte,其值为8位带符号的二进制补码整数,并且其默认值为零

    • short,其值为16位带符号的二进制补码整数,并且其默认值为零

    • int,其值为32位带符号的二进制补码整数,并且其默认值为零

    • long,其值为64位带符号的二进制补码整数,并且其默认值为零

    • char,其值为16位无符号整数,表示基本多语言平面中的Unicode代码点,并以UTF-16编码,其默认值为空代码点('\u0000')。

    浮点类型为:

    • float,其值是float值集的元素,或者(在受支持的情况下)float-extended-exponent值集的元素,其默认值为正零

    • double,其值是双精度值集或受支持的双扩展指数值集的元素,并且其默认值为正零

    boolean:该boolean 类型的值真实值true,默认值为false

    returnAddress:该returnAddress类型的值是指向Java虚拟机指令的操作码的指针,returnAddress 数据只存在于字节码层面。与数字原始类型不同,该returnAddress类型不对应于任何Java编程语言类型,并且不能由正在运行的程序进行修改。

    对于 JVM 来说,程序就是存储在方法区的字节码指令,而 returnAddress 类型的值就是指向特定指令内存地址的指针。

    引用类型

    让 JVM 能更好的支持于面向对象语言的设计,引用类型的值用来指向内存中分配的类实例(对象)或者数组。JVM 规范中并没有详细规定引用类型的实现细节,比如引用应该通过何种方式去定位、访问堆中的对象,具体的对象访问方式取决于虚拟机的具体实现。

    目前主流引用类型的实现方案两种:句柄直接指针

    句柄 直接引用

    两种方式各有优劣:
    句柄:访问的最大好处就是 reference 中存储的是稳定的句柄地址,在对象被移动(比如垃圾回收时,整理内存空间,会移动对象的存储位置)时只会改变句柄中示例数据的指针,而 reference 本身不需要修改。
    直接指针:访问的最大好处就是速度更快,节省了一次内存寻址的时间开销。

    相关文章

      网友评论

        本文标题:JVM 数据类型

        本文链接:https://www.haomeiwen.com/subject/smkswktx.html