关于虚拟机栈帧中动态链接的疑问

新手上路,请多包涵

首先吐槽一下,周志明的《深入理解java虚拟机》写的不怎么样,可以说比较差,

1. 首先是行文结构没有逻辑性,章节之间逻辑上很乱。
2. 知识讲解上,很多关键点不讲,非关键的点大幅的讲

好了吐槽到此为止,进入正题。

动态链接(或指向运行时常量池的方法引用)
每一个栈帧内部都包含一个指向运行时常量池中该栈帧所属方法的引用
包含这个引用的目的就是为了支持当前方法的代码能够实现动态链接(Dynamic Linking),比如:invokedynamic指令。

这是《深入理解java虚拟机》中对动态链接的说明,完全是硬翻译虚拟机规范,有几个疑问:

  1. 虚拟机栈帧中指向了该栈帧所属方法在常量池的引用, 这个引用是为了实现动态链接。指向本方法的引用怎么在《深入理解java虚拟机》 直接被定义成了动态链接?
  2. 为什么指向本方法的引用能够支持动态链接, 本方法的引用在动态分派过程中起了什么作用?
阅读 2.3k
1 个回答
虚拟机栈帧中指向了该栈帧所属方法在常量池的引用, 这个引用是为了实现动态链接。指向本方法的引用怎么在《深入理解java虚拟机》 直接被定义成了动态链接?

答:当可执行文件中的符号指向其它类的属性、方法时候就会用到动态链接。

为什么指向本方法的引用能够支持动态链接, 本方法的引用在动态分派过程中起了什么作用

答:没看明白在问什么,题主似乎对静态/动态链接,链接发生的时机,链接的目的,链接的方法,符号重定位等概念不熟悉,建议先了解相关知识。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进