【发布时间】:2013-12-20 18:47:34
【问题描述】:
JVM 为内部类成员和方法分配空间的方式有什么不同。 请提供所有可用类型的嵌套类(静态、本地、非静态、匿名)在此上下文中的区别。 我从各种其他来源进行了搜索,但没有得到明确的想法。
【问题讨论】:
-
存储是什么意思?
-
驻留在或分配在与 perm 无关的主内存中。存储
-
你为什么想知道这个?这很可能取决于您使用的 JVM(oracle、open jdk、.. 版本 5、6、7..)。出于编程 Java 的目的,应该可以安全地假设没有区别。
-
只适合任何疯狂的面试官。简而言之,堆和堆栈就足够了。
-
类定义存储在 PermGen 中,因为嵌套类(内部静态)被视为普通类,因此它们也应该存储在那里。作为它们所属类的一部分的内部类和本地类不会自然存储在不同的空间中。我无法为您提供证明,但永久一代可能是正确的地方。这适用于 Java
标签: java nested inner-classes