什么都不说先上图:
- 程序计数器 其实就是一小块内存空间,主要功能就是辅助字节码解释器选取吓一跳需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能。
- Java虚拟机栈 Java虚拟机栈是线程私有的,与线程同生共死,这里要注意的是每一个方法的使用其实就是这个方法对应的栈帧从入栈到出栈的过程,所以我们栈的运行遵循先进先出规则。
- 本地方法栈 与虚拟机栈类似,只是虚拟机栈执行的是java方法,而这个执行的是native方法服务。
- Java堆 Java堆是虚拟机中占内从最大的一块,并且堆是被所有线程共享,在虚拟机启动时创建,我们经常讲的java虚拟机的垃圾回收器管理的主要区域就是java堆。
- 方法区 方法区也是被各个线程所共享的内存区域,不过它存储的是已经被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。
- 运行时常量池 其实就是方法区的一部分用于存放编译期生成的各种字面量和符号引用。
以上只是我的个人理解,不喜勿喷,喜欢的大家可以一起交流学习。