我们声明静态时分配的内存在哪里?

时间:2012-06-07 12:07:55

标签: java android

  

可能重复:
  static allocation in java - heap, stack and permanent generation

它的一个小混乱...定义静态到类,方法和变量。在这三种情况下,因此分配内存。 ?我的老板熟悉C,他说只有变量在堆内存中,其余的(静态类和静态方法)将保留在主内存中。是真的吗?任何解释。?

再来一个 在android中使用静态类和静态方法是最佳实践吗?

2 个答案:

答案 0 :(得分:5)

试试这个,

static members are stored in Method Area.

类实例和数组存储在堆内存中。堆内存也称为共享内存。因为这是多个线程共享相同数据的地方。

Non-heap Memory

它包含‘Method Area’和内部处理所需的其他内存。所以这里的主要参与者是'方法区'。

Method Area

如最后一行所示,方法区域是非堆内存(特殊堆区域)的一部分。它存储每类结构,方法和构造函数的代码。每类结构意味着运行时常量和static fields

以上三个(堆内存,非堆内存和方法区域)是内存和JVM的主要术语。

类实例和数组存储在堆内存中。堆内存也称为共享内存。因为这是多个线程共享相同数据的地方。

答案 1 :(得分:3)

静态变量与Classes声明(方法和属性等)保存在同一位置。 1)。类(由类加载器加载)进入名为Permanent Generation的堆上的特殊区域,并且静态字段也与它们的每个实例共用的位置相同。 有关详细信息:

see this answer