【问题标题】: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 本身将放置在堆的年轻代中。

【讨论】:

    【解决方案2】:

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

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

    static allocation in java - heap, stack and permanent generation

    【讨论】:

      【解决方案3】:

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

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

      如果您需要更多信息,或者您的问题是更具体的实施;让我们重新表述你的问题,我会重新发布一个更好的答案。

      【讨论】:

        猜你喜欢
        • 2023-03-07
        • 2011-01-09
        • 2013-04-24
        • 1970-01-01
        • 2020-07-17
        • 2021-10-17
        • 1970-01-01
        • 2021-06-14
        • 1970-01-01
        相关资源
        最近更新 更多