java静态变量存储在内存中的位置?

时间:2014-03-29 11:48:14

标签: java static-variables

class A{
 static int i = 10;
 static int j = 20;

 static void getname(){

   }

}

这些变量在哪里存储在内存中?

3 个答案:

答案 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实现。

如果你看到记忆问题,我可能会看看被分配的是什么,而不是如何分配。

如果您需要更多信息,或者您的问题更具针对性;让我们重新解释你的问题,我会重新发布一个更好的答案。