【问题标题】:Where java static variables are stored in memory?java静态变量存储在内存中的什么位置?
【发布时间】:2014-05-08 23:15:27
【问题描述】:
class A{
static int i = 10;
static int j = 20;
static void getname(){
}
}
这些变量将存储在内存中的什么位置?
【问题讨论】:
标签:
java
static-variables
【解决方案1】:
首先,静态成员变量存放在堆的Permanent Generation区。
您的示例包含原始类型变量,它们将存储在 PermGen 中。
如果这些是对象类型变量,例如 static Object x = new Object(); ,那么引用 x 将存储在 PermGen 中,而 Object 本身将放置在堆的年轻代中。
【解决方案3】:
我认为对于某些 JVMS 的大多数实现来说,它是 PERM-GEM 特有的......但我没有证据......事情的真相是......它取决于存储这些值的 JVM。它是一个变量...根据 JVM 实现,它可以以多种不同的方式存储。
如果您发现内存问题,我可能会查看分配的内容,而不是分配方式。
如果您需要更多信息,或者您的问题是更具体的实施;让我们重新表述你的问题,我会重新发布一个更好的答案。