1、程序计数器:当前线程所执行的字节码的行号指示器。
场景理解:并发中,CPU在不同线程间切换,为了线程切换后能恢复到正确的执行位置,每个线程都有程序计数器来记录执行位置。
2、虚拟机栈:生命周期与线程相同。
虚拟机栈描述的是Java方法执行的内存模型,每个方法在执行的同时会创建一个栈帧用于保存局部变量表,操作数栈,动态链接方法出口等信息。
如果线程请求的栈大小无法申请到足够的内存,会抛出OutOfMemoryError。
3、本地方法栈:
虚拟机栈为Java方法(字节码,class文件)服务;
本地方法栈为Native(本地)方法服务。
4、堆:存放对象实例
堆是GC管理的主要区域。
5、方法区:存储已被加载的类信息,常量,静态变量等
运行时常量池在方法区中。
原文:https://www.cnblogs.com/xiaoyu1991/p/11609875.html