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

Where are the default methods of interface stored in memory?

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

我可能错了,但我认为默认方法将存储在静态堆 space 中,就像实例方法存储在 class 中一样。但是,除此之外,考虑到实现 class 不会覆盖接口中默认方法的实现并且没有菱形问题,如果默认方法也被分配给堆栈帧,我也会感到困惑.

我参考了以下链接:

Where are methods stored in memory?

Where are static methods and static variables stored in Java?

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

的一部分

I am confused if default methods are also allocated to stack frames once they are called considering that the implementing class does not override the implementation of default method in interface and there is no diamond problem.

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