java运行时数据区域

时间:2022-12-24 23:49:38

java虚拟机在执行java程序的时候会把内存划分为多个不同的内存区,它们都有着不同的功能,并且生命周期也有不同。


java运行时数据区域



程序计数器

程序计数器是一个很小的内存区域,简单来说就是记录字节码行号的标记(指示器),程序就是根据指示器进行执行,循环,跳转等。为了让多线程的执行和切换,多线程中会有一个独立的计数器,保证线程之间不会相互影响。

java虚拟机栈

与程序计数器一样也是线程私有的。虚拟机栈描述的是java方法执行的内存模型,每个方法在执行都会创建一个栈楨,用来存储局部变量,操作数等信息。


本地方法栈

本地方法栈和虚拟机栈非常类似,不同的是虚拟机栈是为虚拟机执行字节码提供服务,本地方法栈是为虚拟机执行程序使用到的native方法服务。


java 堆

java堆是java虚拟机管理内存最大的一块区域,是所有线程共享区域。主要就是存放对象内存,每一个对象在这里都会分配一块内存。gc堆所管理的主要区域也是这个区域,gc根据独特的算法对java堆进行回收。

方法区

方法区和java堆一样也是一个所有线程共享区域,主要存储虚拟机加载类的信息,常量,静态变量等。



如果您还想了解更多可以关注公众号:


java运行时数据区域