运行时数据区
java类经过javac编译为class文件,常量池只的是class文件中的描述信息和符号引用,经过类加载器加载到jvm中,常量池数据加载到运行时常量池
方法区:
1.6 实现为PermGen永久区,在Heap中,方法区中包含运行时常量池和字符串常量池
1.7 实现为PermGen永久区,在Heap中,方法区中包含运行时常量池,字符串常量池在堆中了
1.8 实现为MetaSpace,在本地内存,方法区中包含运行时常量池,字符串常量池在堆中了
常量池:每个java类被编译后,都会有一个constantpool存放类的相关的字符串信息和符号引用。
运行时常量池:每个类都会有一个运行时常量池,会把字面引用转换为直接引用。运行时常量池始终在方法区中。
字符串常量池在堆中,只有一份,被所有的类共用。字符串常量池1.7中存的值,1.8直接存的地址
每个方法对应一个栈贞
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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。