基于jdk1.8
public class Test 1{
/**a在元空间,10在常量池(如果在常量池的话,这个常量池和字符串常量池都在堆
上吗?)**/
public static int a = 10;
//b在元空间,new object()在堆
public static Object b = new Object();
//c在元空间,"123"在堆中的字符串常量池
public static String c = "123";
//我认为同上面的static
public final static int a = 10;
public final static Object b = new Object();
public final static String c = "234";
//d在堆中创建的实例中,20在常量池
public int d = 20;
//e在堆中创建的实例中,new object()在堆中
public Object e = new Object();
//f在堆中创建的实例中,"345"在堆中的字符串常量池中
public String f = "345";
/**d在??按照jvm中所述的,我认为在元空间中,因为jvm说方法区存储常量,不知
道jvm中所说的常量和我下面定义的常量是不是一回事**/
public final int d = 20;
//e同上,new object()在堆中
public final Object e = new Object();
//f同上,"456"在字符串常量池中
public final String f = "456";
public void test(){
/** g在局部变量表,30从常量池(此常量池可以理解为运行时常量池吗还是整型常
量池)拿出来压 入操作数栈然后弹出赋值给g**/
int g = 30;
//h在局部变量表,"567"从字符串常量池拿到地址压入操作数栈然后弹出赋值给h
String h ="567";
//i在局部变量表,从堆中拿到Object实例的地址压入操作数栈然后弹出赋值给i
Object i = new Object();
}
}
上述是我的理解,请大神帮忙指错
补充问题:元空间里究竟存了什么?