请告诉我静态引用,静态原语,对象引用,对象本身和方法本身以及类信息的存储位置。
*请告诉我这个内存管理是谁?
*请告诉我储存在permgen的地方?
*请指定将为以下程序的所有对象引用,对象,基本数据(对于静态和非静态类型)分配的存储空间(堆或堆栈)。
package training;
public class Memory {
static int var =1;
static String s="hi";
static Threadtutorial th;// this is another class in the same project,consider this an object.
static Threadtutorial tt = new Threadtutorial();
int are =2;
int d;
static float value;
public static void main(String[] args) {
// TODO Auto-generated method stub
int a;
int b=1;
Threadtutorial th;// this is another class in the nsame project,consider this an object.
Threadtutorial tt = new Threadtutorial();
final int var =1;
value=8;
}
void somemethod(){
int ne=3;
String something;
Object ref;
Object dereee= new Object();
}
static void another(int b){
int c=b;
Object ref2;
Object der= new Object();
}
}
答案 0 :(得分:-1)
根据JLS概念上的事情是一回事和确定性的,它们在JVM中的物理上是另一回事,并且因环境而异。
简单的部分是概念上的事物。包括方法区域,静态字段空间和其他类型级别信息的类型定义位于堆的类区域中。调用方法时,方法参数和其他方法控制信息存在于堆栈中。实例存在于堆中。
在物理上,这些东西可以在不同的时间生活在不同的地方,甚至完全消失。成员变量值可能在堆栈或寄存器中存在一段时间,而对象的其余部分甚至不在内存中。方法调用可能会完全消失。运行时解释器/编译器组合在处理程序逻辑方面有很大的余地。
你真的尝试过研究你的问题吗?你有什么想法?