JVM中的直接引用和符号引用
来源:互联网 发布:displaynone不执行js 编辑:程序博客网 时间:2024/06/11 07:34
JVM在装载class文件的时候,会有一步是将符号引用解析为直接引用的过程。
那么这里的直接引用到底是什么呢?
对于指向“类型”【Class对象】、类变量、类方法的直接引用可能是指向方法区的本地指针。
指向实例变量、实例方法的直接引用都是偏移量。实例变量的直接引用可能是从对象的映像开始算起到这个实例变量位置的偏移量。实例方法的直接引用可能是方法表的偏移量。
在《深入java虚拟机》书的第197页我们可以看到,子类中方法表的偏移量和父类中的方法表的偏移量是一致的。比如说父类中有一个say()方法的偏移量是7,那么子类中say方法的偏移量也是7。
书中第199页说,通过“接口引用”来调用一个方法,jvm必须搜索对象的类的方法表才能找到一个合适的方法。这是因为实现同一个接口的这些类中,不一定所有的接口中的方法在类方法区中的偏移量都是一样的。他们有可能会不一样。这样的话可能就要搜索方法表才能确认要调用的方法在哪里。
而通过“类引用”来调用一个方法的时候,直接通过偏移量就可以找到要调用的方法的位置了。【因为子类中的方法的偏移量跟父类中的偏移量是一致的】
所以,通过接口引用调用方法会比类引用慢一些。
下面介绍下什么是接口引用。
interface A{void say();}
class B implements A{}
class C{public static void main(String []s){A a=new B();a.say()}}
在上面的第三行代码中,就是用“接口引用”来调用方法。
--------------------------------------------------------------------
符号引用:
符号引用是一个字符串,它给出了被引用的内容的名字并且可能会包含一些其他关于这个被引用项的信息——这些信息必须足以唯一的识别一个类、字段、方法。这样,对于其他类的符号引用必须给出类的全名。对于其他类的字段,必须给出类名、字段名以及字段描述符。对于其他类的方法的引用必须给出类名、方法名以及方法的描述符。
- JVM中的直接引用和符号引用
- JVM中的直接引用和符号引用
- JVM中的直接引用和符号引用
- JVM中的直接引用和符号引用
- JVM中的直接引用和符号引用
- JVM中的直接引用和符号引用
- Jvm中的直接引用和符号引用
- JVM中的直接引用和符号引用
- JVM中的直接引用和符号引用(未读)
- JVM的符号引用和直接引用
- JVM 解析阶段 符号引用和直接引用的区别
- 符号引用和直接引用
- 符号引用和直接引用
- JVM中符号引用与直接引用
- 个人理解 java虚拟机中的符号引用和直接引用
- 个人理解 java虚拟机中的符号引用和直接引用
- java虚拟机中的符号引用和直接引用
- 个人理解 java虚拟机中的符号引用和直接引用
- 串的模式匹配改进--KMP算法
- 博客搬家
- 静态库 动态库
- 计算定期还款额度
- IIS5.1安装后打不开asp网站
- JVM中的直接引用和符号引用
- IIS网站问题-内部服务器错误-没有权限查看该目录或页-必须使用一个可更新的查询
- 南京去年2万多张驾驶证过期未审-驾驶证-过期
- scoped_ptr 与auto_ptr 区别
- 上机验证一
- 小端模式和大端模式
- taglist安装
- Struts2第一篇:struts的web配置开始
- C++链表类的基本实现