JVM内存模型详解

JVM内存模型详解

程序计数器

当前线程所执行子节目的行号指示器,通过程序计数器内的数值来选取下一条需要执行的指令。JVM多线程是通过分配处理器的执行时间来实现的,在任何一个确定的时间,一个处理器只会执行一个线程中的指令。各个线程的程序计数器互不影响,是线程私有的。

jvm栈

栈,也是线程私有的。生命周期是随着线程的创建而创建,销毁而销毁。每个java方法执行时都会创建出一个栈来存储局部变量,方法出口等信息,每个java方法的调用到执行完成,代表着入栈到出栈的过程。

栈内存指的是局部变量表部分,局部变量表存储了基本数据类型,引用对象地址指针等

本地方法栈

本地方法栈,是为jvm中的需要本地方法时做服务

Java堆

线程共享的内存区域,存放对象实例,GC回收主要区域

方法区

线程共享的内存区域,用于存储被JVM加载的类信息(字段、方法、接口),常量,静态变量

运行常量池

方法区一部分,存放生成的常量