JVM
什么是程序计数器?
✔ JVM的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的。 ✔ 为了各条线程之间的切换后计数器能恢复到正确的执行位置,所以每条线程都会有一个独立的程序计数器。 ✔ 当线程正在执行一个Java方法,程序计数器记录的是正在执行的JVM字节码指令的地址。 ✔ 如果正在执行的是一个Natvie(本地方法),那么这个计数器的值则为空(Underfined)。 ✔ 程序计数器占用的内存空间很少,在JVM规范中没有规定任何OutOfMemoryError(内存不足错误)的区域。 javap -v xx.class 打印堆栈大小,局部变量的数量和方法的参数。
✔ 线程私有的,每个线程一份(不会出现线程安全问题) ✔ 内部保存的字节码的行号,用于记录正在执行的字节码指令的地址