程序计数器
Program Counter Register程序计数器(寄存器)
程序计数器在物理层上是通过寄存器实现的
- 作用:记住下一条jvm指令的执行地址
- 特点
- 是线程私有的(每个线程都有属于自己的程序计数器)
- 不会存在内存溢出
虚拟机栈
- 每个线程运行时所需要的内存称为虚拟机栈
- 每个栈由多个栈帧组成,对应着每次方法调用时所占的内存
- 每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法
栈内存溢出(StackOverflowError)
- 栈帧过多导致内存溢出
- 栈帧过大导致内存溢出
java编译工具:
jstack 线程id:可以根据线程id找到有问题的线程进一步定位到有问题的代码行数
本地方法栈(Native Method stack)
java代码在完成一些需求时,需要调用一些底层的,如c/c++代码,那么就需要本地方法栈
例如hashCode()方法,就是一个本地方法
public native int hashC