我们声明静态时分配的内存在哪里?
可能重复:
在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?