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

Dee*_*pak 14 java static-variables

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

 static void getname(){

   }

}
Run Code Online (Sandbox Code Playgroud)

这些变量将存储在内存中的哪个位置?

小智 14

简单地说,静态变量存储在HEAP中.应用于类(而不是实例数据)的类和所有数据都存储在堆的"永久生成"部分中.

如果您需要详细解答,请参阅此处

java中的静态分配 - 堆,堆栈和永久生成


mar*_*612 7

首先,静态成员变量存储在堆的Permanent Generation区域中.

您的示例包含基本类型变量,它们将存储在PermGen中.

如果那些是对象类型变量,例如 static Object x = new Object();,那么引用x将存储在PermGen中,而其Object自身将被放置在堆的Young Generation中.


Ant*_*ink 0

我认为对于某些 JVM 的大多数实现来说,它是 PERM-GEM 所特有的……但我没有证据……事实是……这取决于存储这些值的 JVM。它是一个变量……它可以根据 JVM 实现以多种不同的方式存储。

如果您遇到内存问题,我可能会查看分配的内容,而不是分配的方式。

如果您需要更多信息,或者您的问题更加具体;让我们重新表述您的问题,我将重新发布更好的答案。