微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

接口的默认方法存储在内存中的什么地方?

如何解决接口的默认方法存储在内存中的什么地方?

我浏览了许多帖子,但似乎都回答了接口的静态方法存储在哪里。但是,接口可以具有抽象、静态和方法。我知道静态和抽象方法。但是,我在内存中找不到与方法存储相关的任何内容

我可能错了,但我认为方法将存储在静态堆空间中,就像实例方法与类一起存储一样。但是,除此之外,考虑到实现类不会覆盖接口中方法的实现并且不存在菱形问题,如果方法调用后也分配给堆栈帧,我也感到困惑。

我参考了以下链接

Where are methods stored in memory?

Where are static methods and static variables stored in Java?

解决方法

就 JVM 内存中的存储而言,默认方法没有什么特别之处。与其他类方法一样,它们是 method area 的一部分。

考虑到实现类不会覆盖接口中默认方法的实现并且不存在菱形问题,我很困惑如果默认方法在调用时也分配给堆栈帧。

stack frames 是在调用方法时分配的,同样与方法类型(静态、默认等)无关。不要将它们在运行时调用期间的使用与方法代码(和其他类元数据)的存储位置混淆。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。