Java静态变量存储在哪里?它们存储在内存的静态存储区域中。

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

 static void getname(){

   }

}

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


这个问题已经有答案了,你可以参考这里 - mahesh
在Java中,静态方法和静态变量存储在哪里?是在堆内存还是栈内存中?可能会有复制的情况。 - pgplus1628
3个回答

15

简单来说,静态变量存储在堆中。类及其相关数据(非实例数据)存储在堆的永久代部分。

如果需要详细的答案,请参考以下链接:

Java中的静态分配-堆、栈和永久代


7

首先,静态成员变量会存储在堆的永久代区域。

你的例子包含原始类型变量,它们将被存储在永久代中。

如果这些是对象类型变量,例如 static Object x = new Object(); ,那么引用 x 将被存储在永久代中,而对象本身将被放置在堆的年轻代中。


0

我认为对于一些JVMS的大多数实现,它特定于PERM-GEM...但我没有证据...事实是...这取决于JVM存储这些值的位置。这是一个变量...它可以以许多不同的方式存储,这取决于JVM的实现。

如果您遇到内存问题,我建议查看分配了什么而不是分配方式。

如果您需要更多信息,或者您的问题更具体于实现,请重新表述您的问题,我将发布更好的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接