class A{
static int i = 10;
static int j = 20;
static void getname(){
}
}
将这些变量存储在内存中的位置?其中Java静态变量存储在内存中?
class A{
static int i = 10;
static int j = 20;
static void getname(){
}
}
将这些变量存储在内存中的位置?其中Java静态变量存储在内存中?
我认为对于某些JVMS的大多数实现来说,它特别针对PERM-GEM ......但我没有证据..事情的真相是......它取决于存储这些值的JVM。它是一个变量......它可以根据JVM实现以许多不同的方式存储。
如果你看到内存问题,我可能会看看什么是分配的,而不是如何分配。
如果您需要更多信息,或者您的问题更具体实施;让我们更改您的问题,我会重新发布一个更好的答案。
简单地说,静态变量存储在HEAP。类和适用于类的所有数据(不是实例数据)存储在堆的永久生成部分。
如果你需要详尽的回答,请参阅本
static allocation in java - heap, stack and permanent generation
首先,静态成员变量存储在堆中的永久代区域。
您的示例包含基元类型变量,它们将存储在PermGen中。
如果这些是对象类型变量,例如例如static Object x = new Object();
,那么参考x
将被存储在PermGen中,而Object
本身将被放置在堆的年轻一代中。
这个问题已经回答了你可以参考 [这里] [1] [1]:http://stackoverflow.com/questions/8387989/where-is-a-static - 方法和 - 一个静态变量存储在java中的堆或实体 – mahesh
可能性复制与[其中是静态方法和存储在Java中的静态变量。在堆或堆栈内存中](http://stackoverflow.com/questions/8387989/where-is-a-static-method-and-a-static-variable-stored-in-java-in-heap-or-在-STA) – pgplus1628