java类在哪里生活?

时间:2011-04-07 04:55:57

标签: java

我知道Java对象,实例变量是在堆中创建并存在的,而局部变量和对象引用是在堆栈中创建并存在的。

“阶级”本身在哪里生活?

我问这个是因为当您创建静态变量时,使用类名称调用它们, e.g。

Math.round()

创建Math类时,它在内存(堆或堆栈)中的位置

加特

5 个答案:

答案 0 :(得分:4)

堆的Permgen(永久代)区域......

答案 1 :(得分:2)

Java类存在于Permanent Generation heap中。此外,实习字符串池也存储在此处。

永久生成堆包含:

  • 类的方法(包括字节码)
  • 类的名称(以永久代中也指向字符串的对象形式)
  • 常量池信息(从类文件读取的数据,有关所有详细信息,请参阅JVM规范的第4章)。
  • 与类关联的对象数组和类型数组(例如,包含对方法的引用的对象数组)。
  • JVM创建的内部对象(例如java / lang / Object或java / lang / exception)
  • 编译器(JIT)用于优化的信息

答案 2 :(得分:1)

类在PermGen空间中加载,即Heap

答案 3 :(得分:0)

所有类都在PermGen空间中加载

答案 4 :(得分:0)

您可以在此处阅读有关永久生成(存储类,方法等)的更多信息:

http://blogs.oracle.com/jonthecollector/entry/presenting_the_permanent_generation

但是请注意,当您调用静态方法时,Java实际上是在幕后创建对象的内部实例,因此您实际上是在对象的“幕后”全局实例上调用该方法。 / p>