JVM内存模型详解
程序计数器
当前线程所执行子节目的行号指示器,通过程序计数器内的数值来选取下一条需要执行的指令。JVM多线程是通过分配处理器的执行时间来实现的,在任何一个确定的时间,一个处理器只会执行一个线程中的指令。各个线程的程序计数器互不影响,是线程私有的。
jvm栈
栈,也是线程私有的。生命周期是随着线程的创建而创建,销毁而销毁。每个java方法执行时都会创建出一个栈来存储局部变量,方法出口等信息,每个java方法的调用到执行完成,代表着入栈到出栈的过程。
栈内存指的是局部变量表部分,局部变量表存储了基本数据类型,引用对象地址指针等
本地方法栈
本地方法栈,是为jvm中的需要本地方法时做服务
Java堆
线程共享的内存区域,存放对象实例,GC回收主要区域
方法区
线程共享的内存区域,用于存储被JVM加载的类信息(字段、方法、接口),常量,静态变量
运行常量池
方法区一部分,存放生成的常量