Java接口……动态或静态内存?

java接口在哪里驻留在内存中? 它们是驻留在堆还是堆栈中,还是全局内存? 我认为它们是在堆栈中,因为它们是在编译时创建的。 我对么?

类定义 – 包括接口和抽象类 – 保存在PermGen空间中,这意味着它们永远不会被垃圾回收。 PermGen是iirc的一部分。

从技术上讲,接口在创建常规类实例的意义上不是“实例化”,而是将类信息存储在java permgen空间中。 有关permgen以及类实例和类信息之间差异的更多信息,请参见http://blogs.oracle.com/jonthecollector/entry/presenting_the_permanent_generation 。

类定义(包括接口等)存储在堆上(通常在Permanent generation中,因为它们的生命周期很长)。 如果创建它们的ClassLoader是垃圾收集的,那么它们也可以进行垃圾收集。