3

可能重复:
静态变量的实际内存位置是什么?

类中定义的静态实例变量存储在哪里 - 在堆中还是在永久代中?

JLS(pre java SE 7 和 Java SE 7)说:

17.4.1   Shared Variables
Memory that can be shared between threads is called shared memory or heap
memory.
All instance fields, static fields and array elements are stored in heap memory.

但是这篇文章说:

Success Metrics
...
Class metadata, interned Strings and class static variables will be moved from the permanent generation to either the Java heap or native memory.
...

Description
...
Class metadata and statics are allocated in the permanent generation when a class is loaded and are garbage collected from the permanent generation when the class is unloaded. Interned Strings are also garbage collected when the permanent generation is GC’ed.
...

根据上面的帖子静态是在永久代区域。

哪个是对的??

4

1 回答 1

1

在文章中

Java 堆的一部分称为永久代

所以永久代堆中。

于 2012-11-03T16:03:19.393 回答