博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【java JVM】JVM中类的加载,加载class文件的原理机制
阅读量:6336 次
发布时间:2019-06-22

本文共 980 字,大约阅读时间需要 3 分钟。

暂时贴图一张,以后补充

 

 

解释:

1.符号引用替换为直接引用【参考:http://blog.csdn.net/maerdym/article/details/8087620】

 在java中,一个java类将会编译成一个class文件。在编译时,java类并不知道引用类的实际内存地址,因此只能使用符号引用来代替。比如org.simple.People类引用org.simple.Tool类,在编译时People类并不知道Tool类的实际内存地址,因此只能使用符号org.simple.Tool(假设)来表示Tool类的地址。而在类装载器装载People类时,此时可以通过虚拟机获取Tool类 的实际内存地址,因此便可以既将符号org.simple.Tool替换为Tool类的实际内存地址,及直接引用地址。

2.构造代码块中的代码也是在构造方法中执行的【参考:http://bbs.csdn.net/topics/390635323?page=1】

在编译时的编译器看来会默认将构造代码块中的代码移动到构造方法中,并且移动到构造方法内容的前面。

看如下demo:

1 public class TestCode { 2       3     public TestCode() { 4         System.out.println("构造方法"); 5     } 6       7     { 8         System.out.println("代码块"); 9     }10      11     public static void main(String[] args) {12         new TestCode();13     }14 }

等同于:

1 public class TestCode { 2       3     public TestCode() { 4         System.out.println("代码块"); 5         System.out.println("构造方法"); 6     } 7       8     public static void main(String[] args) { 9         new TestCode();10     }11 }

 

你可能感兴趣的文章
在workflow中,无法为实例 ID“...”传递接口类型“...”上的事件“...” 问题的解决方法。...
查看>>
获取SQL数据库中的数据库名、所有表名、所有字段名、列描述
查看>>
Orchard 视频资料
查看>>
简述:预处理、编译、汇编、链接
查看>>
调试网页PAIP HTML的调试与分析工具
查看>>
路径工程OpenCV依赖文件路径自动添加方法
查看>>
玩转SSRS第七篇---报表订阅
查看>>
WinCE API
查看>>
SQL语言基础
查看>>
对事件处理的错误使用
查看>>
最大熵模型(二)朗格朗日函数
查看>>
html img Src base64 图片显示
查看>>
[Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction...
查看>>
FFMPEG中关于ts流的时长估计的实现(转)
查看>>
Java第三次作业
查看>>
【HDOJ 3652】B-number
查看>>
android代码混淆笔记
查看>>
Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) C. String Reconstruction 并查集
查看>>
BMP文件的读取与显示
查看>>
Flash文字效果
查看>>