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

Java -- JVM的符号引用和直接引用

在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)一个能间接定位到目标的句柄

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Arduino学习笔记24

指导学生编程练习转载于:https://www.cnblogs.com/guochaoxxl/p/7148006.html

好全的Android面试题

转载:http://www.jianshu.com/p/84ee896c3329 需求描述 各种新技术接触渠道比较狭窄, 面试没有底气。 常见面试知识点及回答没有较系统的准备,就业指导提供的资料没时间看,看了记不住。 面试没有经验, 不清楚面试前要做的各种准备、面试过程…

JavaSE--类加载器

参考:http://www.importnew.com/6581.html Java 编译器会为虚拟机转换源指令。虚拟机代码存储在以 .class 为扩展名的类文件中,每个类文件都包含某个类或者接口的定义和代码实现。这些类文件必须由一个程序进行解释,该程序能够将虚拟机的指令…

Linux下汇编语言学习笔记13 ---

这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译《汇编语言基于Linux环境》的书,喜欢看原版书的同学可以看《Assembly Language Step-By-Setp:Programming with Linux 3rd Edition》,非常感谢该…

java netbeans 教程_NetBeans 教程

NetBeans IDE Java 快速入门教程第一章本章通过指导您创建一个简单的 "Hello World" Java 控制台应用程序,简要介绍 NetBeans IDE 工作流。学习完本教程后,您将对如何在 IDE 中创建和运行应用程序有一个基本了解。学习完本教程所需的时间不到 …

几个python小程序

python小程序 1-100求和 1 def Sum(x, y):2 return xy3 print reduce(lambda x,y:xy,range(1,101))4 5 i 16 j 07 while i < 101:8 j i j9 i 1 10 print j View Code输出1-100之间的奇偶数1 i 1 2 a [] 3 while i < 100: 4 if i%2 0: 5 …

java输出a-z_有1-26个数字和a-z字母,用Java多线程实现先输出2和数字再输出2个字

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼public class Z extends Thread{char[] letters new char[]{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z};public static void main(String[] args){Z z new Z();X x new X();x.start();z.start();}public void run()…

Linux下git使用

一、安装 本人使用的是centos 7&#xff0c;首先安装git 1.下载git&#xff1a;wget https://Github.com/Git/Git/archive/v2.3.0.tar.gz 2.下载之后解压&#xff1a;tar xvf v2.3.0.tar.gz 3.进入解押文件目录&#xff1a;cd git-2.3.0 4.依次运行如下命令&#xff1a; ./conf…

java 水表识别_一种水表数字的AI智能识别方法与流程

本发明涉及模式识别与人工智能技术领域&#xff0c;特别涉及一种直观的水表数字的AI智能识别方法。背景技术&#xff1a;深度学习在目标检测的应用发展迅速&#xff0c;在YOLO(You Only Look Once)之后又出现了升级版本YOLOv2&#xff0c;采用的是Darknet-19作为基础网络&#…

Summary Day30

1.内存管理 1.1 进程中的内存区域划分 代码区 仅仅读常理区 全局区 BSS 堆 栈 1.2 字符串存储形式之间的比較 字符指针&#xff0c;字符数组。字符动态内存 1.3 虚拟内存管理技术 Unix/Linux系统总的内存都是採用虚拟内存管理技术进行管理。即&#xff1a;每一个…

java装箱和拆箱_java自动装箱和拆箱

这个是jdk1.5以后才引入的新的内容&#xff0c;作为秉承发表是最好的记忆&#xff0c;毅然决定还是用一篇博客来代替我的记忆&#xff1a;java语言规范中说道&#xff1a;在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装成为装箱&#xff0c;解包装称为拆箱)&a…

java 插桩 工具_一个基于Eclipse的通用Java程序插桩工具.pdf

第38卷第7期 计算机科学 V01&#xff0e;38NO&#xff0e;7Science 20112011年7月 Computer July一个基于Eclipse的通用Java程序插桩工具郑晓梅(南京中医药大学信息技术学院 南京210046)(南京大学计算机软件新技术国家重点实验室 南京210093)摘要插桩技术作为一种有效理解程序动…

【FICO 汇率】汇率

汇率存储的表位TCURR 汇率维护的事务代码为&#xff1a;OB08 每一种货币汇率都有很多版本&#xff0c;按照时间有效性管理 汇率涉及的两种货币&#xff0c;第一个为从&#xff0c;第二个为到&#xff0c;一般换算比率都是1&#xff0c;但也有不是1的情况&#xff08;主要是换算…

java 新窗口跳转页面_Java web开发中页面跳转小技巧——跳转后新页面在新窗口打开...

最近学习Java web&#xff0c;在学习过程中想实现一个需求&#xff0c;就是在jsp页面跳转的时候&#xff0c;希望跳转后的新页面在新窗口中打开&#xff0c;而不是覆盖原来的页面&#xff0c;这个需求使我困惑了好长时间&#xff0c;后来通过大海捞针似的在网上寻找方法&#x…

分辨率到底是个什么概念?它和DPI之间是什么关系?

"分辨率"到底是个什么概念&#xff1f;它和DPI之间是什么关系&#xff1f; 分辨率&#xff1a;显示分辨率&#xff08;屏幕分辨率&#xff09;是屏幕图像的精密度&#xff0c;是指显示器所能显示的像素有多少。由于屏幕上的点、线和面都是由像素组成的&#xff0c;显…

mysql.w002_mysql简单例子

登陆数据库&#xff1a;mysql -u用户名 -p密码 -P端口 -h数据库地址‍‍‍‍‍‍修改mysql提示符&#xff1a;(仅本次连接有效)‍‍‍‍‍‍方法一&#xff1a;执行mysql -uroot -proot -prompt \h结果为&#xff1a;localhost方法二&#xff1a;进入mysql后&#xff0c;执行PR…

mysqli mysql的区别_phpmysqli和mysql区别详解

本文介绍下&#xff0c;php中有关mysqli与mysql类的一些区别&#xff0c;有需要的朋友&#xff0c;可以作个参考哦。一&#xff0c;PHP-MySQL 是 PHP 操作 MySQL 资料库最原始的 Extension &#xff0c;PHP-MySQLi 的 i 代表 Improvement &#xff0c;提更了相对进阶的功能。PD…

JQuery中的Deferred-详解和使用

首先&#xff0c;为什么要使用Deferred&#xff1f; 先来看一段AJAX的代码&#xff1a; 1 var data; 2 $.get(api/data, function(resp) { 3 data resp.data; 4 }); 5 doSomethingFancyWithData(data); View Code 这段代码极容易出问题&#xff0c;请…

ps aux grep java_linux命令ps-aux监控java进程

linux下用ps -aux可以监控java的进程情况。linux根据内核的不同对每个进程分配的最大使用内存不同&#xff0c;如果是32位机器&#xff0c;cpu最大的寻址空间是2的32次方&#xff0c;4G&#xff0c;但内核分配给每个进程最大的内存肯定是小于4G&#xff0c;经过重新编译的内核分…

【Eclipse】eclipse在线安装反编译插件

1.help->install new software 2.Add Name&#xff1a;jd-eclipse_update_site Location&#xff1a;http://jd.benow.ca/jd-eclipse/update 3.等待加载出来 4.持续点击下一步&#xff0c;直到完成。 转载于:https://www.cnblogs.com/flydkPocketMagic/p/7170283.html