性能问答>final方法和静态方法在元空间中的存储位置>
7回复

final方法和静态方法在元空间中的存储位置



想要请教一下各位大大
类的非final和非静态方法都存储在instanceKlass对象的虚方法表中,那么这些final方法和静态方法存储在instanceKlass哪个位置呢?
109.png

4294 阅读
请先登录,再评论

个人认为是在上图中的 Array<Method*>* InstanceKlass::_methods: Array<Method*> 位置
使用HSDB mem 内存地址 数字 获取到的几个内存地址,都是类自己本身的所有方法,跟Class Brower中的该类方法地址一致
不知道我的分析是否正确,能帮忙解答一下吗?

2年前
回复 大空翼:

好的谢谢

2年前回复
回复 难得今生共此时:

就是在resolve method的时候做的,static之类的方法比较确定,能直接找到,而实例方法之类的无法直接找到到底执行谁的,依赖运行上下文确定

2年前回复
回复 大空翼:

那是不是可以说,类加载解析阶段会将一部分的符号引用转换成直接引用,像非虚方法都会在此时确定方法的指针地址,这个地址应该就是在_methods这里获取的吧?

2年前回复
查看更多