一个语言学习的历程是语法、生态、底层。
JVM虚拟机的类加载器,在加载类时,会经过:加载、验证、解析。
jdk8前,类的元信息,常量池,静态方法等,都在“永久代”这种实现方式内。
8以后, 常量池、静态方法移到堆中,“永久代” 被“元空间(只存元信息)”替代。
方法区是一种概念(说法,指的是“永久代”或“元空间”。
类加载时,虚拟机会对类做什么
- 解析:把类中的“符号引用”变成“直接引用:”A类加载时是符号引用,加载中如果用到B的资源,就唤醒B(让B加载)。实现直接引用。
多态时,用动态解析来后期绑定:由虚拟机获得实际信息后,再完成解析(由符号引用变成直接引用)。. - 初始化:完成类的主动资源引用(赋值等)。
只有加载时是用户主导的,其余都是JVM主导类。