一、程序计数器
1、作用:记住下一条jvm指令的执行地址。jvm的一条指令执行完毕后,在程序计数器中寻找下一条指令的执行地址。
2、线程私有的,每个线程都有程序计数器。
3、不会存在内存溢出。
二、虚拟机栈
定义:
1、栈是线程运行时需要的内存空间。
2、每个栈由多个栈帧组成,对应着每次方法调用所占的内存。
3、每个线程只有一个活动的栈帧,对应着正在执行的那个方法。
栈内存溢出问题:
1、栈帧过多导致栈内存溢出。
2、栈帧过大导致栈内存溢出。
三、堆
通过new关键字,创建的对象都会使用堆内存。
特点:
1、它是线程共享的,堆中的对象要考虑线程安全的问题。
2、有垃圾回收机制。