【发布时间】:2011-04-07 04:55:57
【问题描述】:
我知道 Java 对象,实例变量被创建并存在于堆中,而局部变量和对象引用被创建并存在于堆栈中。
“类”本身在哪里呢?
我问这个是因为当你创建静态变量时,你使用类名来调用它们, 例如
Math.round()
创建 Math 类时,它在内存中的哪个位置(堆或堆栈)
加特
【问题讨论】:
-
我认为所有类都加载到 PermGen 空间中。
标签: java
我知道 Java 对象,实例变量被创建并存在于堆中,而局部变量和对象引用被创建并存在于堆栈中。
“类”本身在哪里呢?
我问这个是因为当你创建静态变量时,你使用类名来调用它们, 例如
Math.round()
创建 Math 类时,它在内存中的哪个位置(堆或堆栈)
加特
【问题讨论】:
标签: java
堆的Permgen(永久代)区域...
【讨论】:
Java 类存在于Permanent Generation heap 中。同时内部字符串池也存储在这里。
永久代堆包含:
【讨论】:
类在 PermGen 空间(即堆)中加载
【讨论】:
所有类都加载到 PermGen 空间中
【讨论】:
您可以在此处阅读有关永久代(存储类、方法等)的更多信息:
http://blogs.oracle.com/jonthecollector/entry/presenting_the_permanent_generation
但是请注意,当您调用静态方法时,Java 实际上是在幕后创建对象的内部实例,因此您实际上是在对象的“幕后”全局实例上调用该方法。
【讨论】: