一、jvm的内存结构
分析JVM的内存结构,主要是分析JVM运行时数据存储区域。JVM的运行时数据区主要包括:堆、栈、方法区、程序计数器等等。
运行时数据区本地方法栈方法区虚拟机NativeMethodVMStackMethodAreastack程序计数器堆ProgramCounterRegisterHeap执行引擎本地库接口
1.程序计数器:
作用:当前线程的下一条JVM字节码指令的执行地址,便于进行线程切换
特点:1.线程是私有的,保证了各线程不会相互影响
2.不会存在内存溢出
拓展题:
1.为什么要使用PC寄存器记录当前线程的执行地址?
答:因为CPu需要不停的切换各个线程,这个时候切换回来以后,就知道接着从哪里开始继续执行。
2.PC寄存器为什么会被设定为线程私有?
答:多线程在一个特定的时间段只会执行其中某一个线程方法,CPU会不停的做任务切换,这样必然会导致经常中断或者恢复。为了能够准确的记录各个线程正在执行的当前字节码指令地址,所以为每个线程都分配了一个PC寄存器,让每个线程都独立计算,不会相互影响。
2.java虚拟机栈:
编译器可知的各种基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(引用指针,并非对象本身)<