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

可能重复:
在Java中的静态分配 - 堆,堆栈和永久生成

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

在使用静态类和静态方法的android中还有一个是最佳实践?


尝试这个,

static members are stored in Method Area.

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

Non-heap Memory

它包括'Method Area'和其他内部处理所需的内存。 所以这里的主要玩家是'方法区'。

Method Area

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

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

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


静态变量保存在Classes声明(方法和属性等)的相同位置。 1)。 类(由类加载器加载)进入永久生成堆的特殊区域,并且静态字段也会到达类的每个实例所共有的相同位置。 更多细节 :

看到这个答案

链接地址: http://www.djcxy.com/p/82849.html

上一篇: where the memory allocated when we declare static?

下一篇: Where are Metaspace and Runtime Constant pools in JVM's memory?