2014-03-29 37 views
13
class A{ 
static int i = 10; 
static int j = 20; 

static void getname(){ 

    } 

} 

将这些变量存储在内存中的位置?其中Java静态变量存储在内存中?

+0

这个问题已经回答了你可以参考 [这里] [1] [1]:http://stackoverflow.com/questions/8387989/where-is-a-static - 方法和 - 一个静态变量存储在java中的堆或实体 – mahesh

+0

可能性复制与[其中是静态方法和存储在Java中的静态变量。在堆或堆栈内存中](http://stackoverflow.com/questions/8387989/where-is-a-static-method-and-a-static-variable-stored-in-java-in-heap-or-在-STA) – pgplus1628

回答

0

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

如果你看到内存问题,我可能会看看什么是分配的,而不是如何分配。

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

6

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

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

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