Java静态变量在内存中存储在哪里?

2022-09-04 01:34:57
class A{
 static int i = 10;
 static int j = 20;

 static void getname(){

   }

}

这些变量将存储在内存中的什么位置?


答案 1

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

如果您需要详尽的答案,请参考

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


答案 2

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

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

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


推荐