class A{
static int i = 10;
static int j = 20;
static void getname(){
}
}
这些变量在哪里存储在内存中?
答案 0 :(得分:14)
简单地说,静态变量存储在HEAP 中。应用于类(而非实例数据)的类和所有数据都存储在堆的“永久生成”部分中。
如果您需要详细解答,请参阅
static allocation in java - heap, stack and permanent generation
答案 1 :(得分:7)
首先,静态成员变量存储在堆的Permanent Generation区域中。
您的示例包含基本类型变量,它们将存储在PermGen中。
如果那些是对象类型变量,例如 static Object x = new Object();
,则引用x
将存储在PermGen中,而Object
本身将被存储在Young中生成堆。
答案 2 :(得分:0)
我认为对于某些JVMS的大多数实现它特别适用于PERM-GEM ......但我没有证据......事情的真相是......它取决于存储这些值的JVM。它是一个变量......它可以存储在许多不同的时尚中,具体取决于JVM实现。
如果你看到记忆问题,我可能会看看被分配的是什么,而不是如何分配。
如果您需要更多信息,或者您的问题更具针对性;让我们重新解释你的问题,我会重新发布一个更好的答案。