JVM
什么是 JVM ?:
定义:
- Java Virtual Machine ,Java 程序的运行环境(Java 二进制字节码的运行环境)。
优点:
一次编译,处处执行
自动的内存管理,垃圾回收机制
数组下标越界检查
JVM、JRE、JDK 的关系:
JVM内存结构:
一、程序计数器
定义:
- Program Counter Register 程序计数器(寄存器)
特点:
特点:
- 是线程私有的
- 不会存在内存溢出
- 记录下一条 jvm 指令的执行地址行号
代码:
0: getstatic #20 // PrintStream out = System.out; 3: astore_1 // -- 4: aload_1 // out.println(1); 5: iconst_1 // -- 6: invokevirtual #26 // -- 9: aload_1 // out.println(2); 10: iconst_2 // -- 11: invokevirtual #26 // -- 14: aload_1 // out.println(3); 15: iconst_3 // -- 16: invokevirtual #26 // -- 19: aload_1 // out.println(4); 20: iconst_4 // -- 21: invokevirtual #26 // -- 24: aload_1 // out.println(5); 25: iconst_5 // -- 26: invokevirtual #26 // -- 29: return
作用:
- 解释器会解释指令为机器码交给 cpu 执行,程序计数器会记录下一条指令的地址行号,这样下一次解释器会从程序计数器拿到指令然后进行解释执行。
- 多线程的环境下,如果两个线程发生了上下文切换,那么程序计数器会记录线程下一行指令的地址行号,以便于接着往下执行。