可能重复:
static allocation in java - heap, stack and permanent generation
它的一个小混乱...定义静态到类,方法和变量。在这三种情况下,因此分配内存。 ?我的老板熟悉C,他说只有变量在堆内存中,其余的(静态类和静态方法)将保留在主内存中。是真的吗?任何解释。?
再来一个 在android中使用静态类和静态方法是最佳实践吗?答案 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的堆上的特殊区域,并且静态字段也与它们的每个实例共用的位置相同。 有关详细信息: