java接口在内存中的位置是什么?它们是驻留在堆还是堆栈中,还是全局内存?我认为它们是在堆栈中,因为它们是在编译时创建的。我是对的吗?
答案 0 :(得分:5)
类定义 - 包括接口和抽象类 - 保存在PermGen空间中,这意味着它们永远不会被垃圾回收。 PermGen是iirc的一部分。
答案 1 :(得分:1)
在创建常规类实例的意义上,接口在技术上不是“实例化”,而是将类信息存储在java permgen空间中。有关permgen的更多信息以及类实例和类信息之间的区别,请参阅http://blogs.oracle.com/jonthecollector/entry/presenting_the_permanent_generation。
答案 2 :(得分:0)
类定义(包括接口等)存储在堆上(通常在Permanent generation中,因为它们的生命周期很长)。如果创建它们的ClassLoader
被垃圾收集,那么它们也有资格进行垃圾收集。