运行时数据区
java类经过javac编译为class文件,常量池只的是class文件中的描述信息和符号引用,经过类加载器加载到jvm中,常量池数据加载到运行时常量池
方法区:
1.6 实现为PermGen永久区,在Heap中,方法区中包含运行时常量池和字符串常量池
1.7 实现为PermGen永久区,在Heap中,方法区中包含运行时常量池,字符串常量池在堆中了
1.8 实现为MetaSpace,在本地内存,方法区中包含运行时常量池,字符串常量池在堆中了

常量池:每个java类被编译后,都会有一个constantpool存放类的相关的字符串信息和符号引用。
运行时常量池:每个类都会有一个运行时常量池,会把字面引用转换为直接引用。运行时常量池始终在方法区中。
字符串常量池在堆中,只有一份,被所有的类共用。字符串常量池1.7中存的值,1.8直接存的地址
每个方法对应一个栈贞
image.png

jvm指令

    public class Main {
        public static void main(String[] args) {
            int i = 0;
            i++;
            System.out.println(i);
        }
    }

    0 iconst_0
    1 istore_1
    2 iinc 1 by 1
    5 getstatic #2 <java/lang/System.out>
    8 iload_1
    9 invokevirtual #3 <java/io/PrintStream.println>
    12 return

image.png


一只鱼
49 声望1 粉丝

« 上一篇
Java对象
下一篇 »
垃圾回收算法

引用和评论

0 条评论