返回信息流rt
这是一条镜像帖。来源:北邮人论坛 / java / #58026同步于 2017/11/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
动态绑定和动态连接是同一个概念吗
keepG
2017/11/13镜像同步16 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
在看栈帧,里面有动态连接,说符号引用在运行时解析为方法体的内存入口,好像就是绑定的意思,不知道有什么区别
【 在 hbxtght (ght1993) 的大作中提到: 】
: 动态绑定是面向对象里多态的一个表现
: 动态链接是指的是程序在运行时加载动态链接库
学妹这么晚没睡啊,我觉得楼上可能是正解,DLL和lib是针对动态链接来说的,lib应该说不算
【 在 keepG (keepG) 的大作中提到: 】
: 在看栈帧,里面有动态连接,说符号引用在运行时解析为方法体的内存入口,好像就是绑定的意思,不知道有什么区别
lz说的动态绑定应该指的是符号解析?符号解析不论静态链接还是动态链接都是必不可少的一个环节,动态链接多了个PLT延迟绑定
【 在 keepG 的大作中提到: 】
: 在看栈帧,里面有动态连接,说符号引用在运行时解析为方法体的内存入口,好像就是绑定的意思,不知道有什么区别
:
嗯,查了一下,我感觉jvm栈帧里的动态链接说的就是动态绑定的实现...
【 在 keepG 的大作中提到: 】
: 在看栈帧,里面有动态连接,说符号引用在运行时解析为方法体的内存入口,好像就是绑定的意思,不知道有什么区别
从C/C++的角度:
- 通常说的动态连接(Dynamic Link)指的是C\C++语言编译过程中的最后一步将目标文件连接动态库
- 动态联编(Dynamic binding)指的是程序在运行时才根据指针所指的对象类型调用对应的虚函数版本,实际上就是确定函数调用指向的内存位置。
Java的编译执行机制和C/C++不同,首先编译过程生成.class文件,没有link这个过程,接着加载class到jvm中执行。但你这里提到了栈帧,这已经到了类执行阶段,所以我觉得这里说的动态连接更类似C++里的动态联编。
但个人觉得,你这里说的Java里的动态连接,不但实现了动态联编(多态),也实现C、C++动态连接(link),因为感觉以上两个概念放在jvm里没看出有什么矛盾,从jvm的角度,是在做同样的事。
【 在 keepG 的大作中提到: 】
: 在看栈帧,里面有动态连接,说符号引用在运行时解析为方法体的内存入口,好像就是绑定的意思,不知道有什么区别