在JVM中类加载过程中,在解析阶段,Java虚拟机会把类的二级制数据中的符号引用替换为直接引用。

1.符号引用(Symbolic References):

符号引用以一组符号来描述所引用的目标,符号可以是任何形式的字面量,只要使用时能够无歧义的定位到目标即可。例如,在Class文件中它以CONSTANT_Class_info、CONSTANT_Fieldref_info、CONSTANT_Methodref_info等类型的常量出现。符号引用与虚拟机的内存布局无关,引用的目标并不一定加载到内存中。在Java中,一个java类将会编译成一个class文件。在编译时,java类并不知道所引用的类的实际地址,因此只能使用符号引用来代替。比如org.simple.People类引用了org.simple.Language类,在编译时People类并不知道Language类的实际内存地址,因此只能使用符号org.simple.Language(假设是这个,当然实际中是由类似于CONSTANT_Class_info的常量来表示的)来表示Language类的地址。各种虚拟机实现的内存布局可能有所不同,但是它们能接受的符号引用都是一致的,因为符号引用的字面量形式明确定义在Java虚拟机规范的Class文件格式中。

2.直接引用:

直接引用可以是

(1)直接指向目标的指针(比如,指向“类型”【Class对象】、类变量、类方法的直接引用可能是指向方法区的指针)

(2)相对偏移量(比如,指向实例变量、实例方法的直接引用都是偏移量)

(3)一个能间接定位到目标的句柄

直接引用是和虚拟机的布局相关的,同一个符号引用在不同的虚拟机实例上翻译出来的直接引用一般不会相同。如果有了直接引用,那引用的目标必定已经被加载入内存中了。

java字面量和符号引用_java -- JVM的符号引用和直接引用相关推荐

  1. java符号引用 直接引用_Java -- JVM的符号引用和直接引用

    Java -- JVM的符号引用和直接引用 在JVM中类加载过程中,*在解析阶段,Java虚拟机会把类的二级制数据中的符号引用替换为直接引用.* 1.符号引用(Symbolic References) ...

  2. java字面量和符号引用

    1.字面量 字面量就是直接量,举个例子. String str = "str"; int i = 1; "str"和1都是字面量,有别于变量. 2.符号引用 符 ...

  3. java 字面量_Java字面量

    Java字面量 本章节目标: 理解变量本质是什么,在开发中有什么用?变量三要素是什么?怎么声明变量?怎么给变量赋值?变量是如何分类的?变量的作用域? 知识框架: Java字面量 字面量就是数据/数值, ...

  4. Java: Java字面量、 变量和常量

    Java字面量. 变量和常量 先给出一段小代码,如下: int a = 10; //a为变量,10为字面量 final int b = 10; //b为常量,10为字面量 static str = & ...

  5. java字面量和符号引用_java中字面量,常量和变量之间的区别(附:Integer缓存机制)...

    一.引子 在各种教科书和博客中这三者经常被引用,今天复习到内存区域,想起常量池中就是存着字面量和符号引用,其实这三者并不是只在java中才有,各个语言中都有类似的定义,所以做一下总结,以示区分. 二. ...

  6. java字面量和符号引用_JVM中的直接引用和符号引用

    ​ 在JVM中,类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载7个阶段.而解析阶段即是虚拟机将常量池内的符号引用替换为直接引用的过程. ...

  7. java字面量_java基本数据类型的字面量

    java的基本数据类型一共有8种.其中:(每种类型后面列出了java中的该类型的字面量) 四种整型: int4字节: 12  +12  -12  077 0xFF  0b101(JDK7中支持的二进制 ...

  8. java字面量 方法区_(一)java的内存模型

    程序计数器(私有) 程序计数器:"是一个非常小的内存空间,用来保证程序依次执行",它可以看作是当前线程所执行的字节码的行号指示器 由于java虚拟机的多线程是通过线程轮流切换并分配 ...

  9. java的两种运行机制_Java☞JVM工作原理

    参考博客:1 2 3 JVM工作原理 java虚拟机体系结构 Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是进入这个平台的通道,用Java语言编写并编译的程序可以运行在这个平 ...

最新文章

  1. 一步一步SharePoint 2007之二十三:编写一个最简单的WebPart(1)——创建工程
  2. 隐藏滚动条,保留鼠标滚动效果
  3. 互联网移动支付技术_安全架构图(安全技术/安全协议/加密技术)——转载图片...
  4. mysql一张表最多多少索引_MySQL一个索引最多有多少个列?真实的测试例子
  5. python智能光环板_学而思编程推出全新智能学习系统,搭配多种硬件
  6. 为什么谐振时电抗为0_高压直流输电(LCC-HVDC 和 MMC-HVDC)中平波电抗器的作用和选择策略...
  7. 图纸怎么发给别人_微信语音怎么转发?微信语音转发给别人最新办法10秒解决...
  8. 如何在 AirPods Pro 上安装 Apple 的 Beta 版固件?
  9. rollup函数 和cube函数 的区别?
  10. AirPlay/ios浅谈
  11. 大地主题的解算 matlab,大地主题解算.PPT
  12. linux deploy安装kali和磁盘扩容
  13. 【Cheatsheet】详解git的各种操作
  14. Win10 内置Intel AC-3165无法开启热点 解决
  15. gunicorn 详解
  16. 智能手机防盗软件测试自学,用谁找回手机几率最大?手机防盗软件功能大PK
  17. 码农学技术————六个月学习python全栈【Day08】
  18. 解决K8S中Pod无法正常Mount PVC的问题
  19. 驯龙高手java版_石器时代2驯龙高手
  20. ipfs 云服务器_安丘ipfs服务器,ipfs云算力组装

热门文章

  1. DFS实现逆拓扑排序
  2. 第十二届蓝桥杯省赛第二场C++B组真题 【未完结】
  3. C语言指针和二维数组
  4. SpringMVC环境配置全过程IntelliJ IDEA 2020.3.1
  5. FastDFS配置nginx插件访问图片
  6. 重构之SqlHelper
  7. 推荐 15 款常用开发工具
  8. anaconda+python3.6利用命令安装BeautifulSoup4-4.6.0
  9. 蓝桥杯练习系统习题解答-入门训练
  10. springmvc教程(1)