首页 新闻 搜索 专区 学院

关于jvm静态变量、静态常量、成员变量、成员常量、方法变量存储问题

0
悬赏园豆:10 [待解决问题]

基于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();
        }

}

上述是我的理解,请大神帮忙指错

补充问题:元空间里究竟存了什么?

菜鸡coding的主页 菜鸡coding | 初学一级 | 园豆:182
提问于:2020-12-15 15:15
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册