【问题标题】:Where the members/methods of inner class, static nested class and local inner class are stored.存储内部类、静态嵌套类和本地内部类的成员/方法的位置。
【发布时间】:2013-12-20 18:47:34
【问题描述】:

JVM 为内部类成员和方法分配空间的方式有什么不同。 请提供所有可用类型的嵌套类(静态、本地、非静态、匿名)在此上下文中的区别。 我从各种其他来源进行了搜索,但没有得到明确的想法。

【问题讨论】:

  • 存储是什么意思?
  • 驻留在或分配在与 perm 无关的主内存中。存储
  • 你为什么想知道这个?这很可能取决于您使用的 JVM(oracle、open jdk、.. 版本 5、6、7..)。出于编程 Java 的目的,应该可以安全地假设没有区别。
  • 只适合任何疯狂的面试官。简而言之,堆和堆栈就足够了。
  • 类定义存储在 PermGen 中,因为嵌套类(内部静态)被视为普通类,因此它们也应该存储在那里。作为它们所属类的一部分的内部类和本地类不会自然存储在不同的空间中。我无法为您提供证明,但永久一代可能是正确的地方。这适用于 Java

标签: java nested inner-classes


【解决方案1】:

类的静态数据成员与类一起存储,非静态数据成员存储在每个实例中。类本身是静态的、嵌套的、内部的还是匿名的都没有任何区别。

无论类本身是静态的、嵌套的、内部的还是匿名的,方法,无论是静态的还是非静态的,都与类一起存储。

【讨论】:

  • 无论封闭类是否有非静态成员,都表示非静态存储在堆区?
  • 无论该类是否包含静态、内部或匿名的封闭类,都没有任何区别。我不明白你为什么要问,或者你认为这可能会产生什么影响。这很简单。不要把不复杂的事情复杂化。你只需要知道我回答的第一句话。忘记其他一切。
猜你喜欢
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
相关资源
最近更新 更多