阅读JVM-8规范我试图理解动态链接实际上是什么。
2.6.3动态链接
每个帧(第2.6节)包含对运行时常量池的引用 (§2.5.5)用于支持动态链接的当前方法的类型 方法代码>>(1)<< 。方法的类文件代码是指方法 被调用和通过符号引用访问的变量>>(2)<< 。 动态链接将这些符号方法引用转换为 具体方法引用,根据需要加载类来解决 尚未定义的符号,并将变量访问转换为 与运行时相关的存储结构中的适当偏移量 这些变量的位置>>(3)<< 。这种方法的后期绑定和 变量在方法使用较少的其他类中进行更改 可能会破坏这段代码。
(1)“当前方法的类型是什么?”它是定义方法的类还是方法返回类型?
(2)“方法的类文件代码”这里指的是定义方法的.class文件,对吧?
(3).1 “动态链接转换这些符号......”我们可以说“动态链接”是将符号方法引用转换为具体方法引用,加载类的过程。等等?
(3).2 符号和具体方法引用之间究竟有什么区别,可能最好提一下方法在内存中的表示方式?
(3).3 “解决尚未定义的符号”这些“尚未定义的符号”是什么?
(3).4 “将变量访问转换为适当的访问
与这些变量的运行时位置相关的存储结构中的偏移“我对这句话一无所知。