Java虚拟机内存数据区域

Jvm运行时内存区域主要分为:程序计数器,jvm栈,本地方法栈,堆,方法区。如图(图片来自网络)

Java虚拟机内存数据区域

1:程序计数器:

      在Java程序中,每一条线程,都会有独立的程序计数器,用于保证线程在切换的时候,能够正常运行。程序计数器是一块很很小的空间,它记录着当前线程运行的字节码行号,字节码解释器就是通过改变程序计数器的值,来实现运行要运行的下一行指令。如果Java执行的是Native方法,则指示器的值为undefined。

2:虚拟机栈:

        Java虚拟机栈也是线程私有的,方法在执行的时候,会创建一个栈帧,用用于存储 局部变量表,操作数栈,方法出口相关信息。局部变量表存储了各种基本数据类型,引用类型,返回值类型。

3:本地方法栈,月虚拟机栈相似,不同的是,虚拟机栈是执行的Java方法,本地方法栈是Java调用的本地方法栈

4:堆,是Java的最大一块内存,存放着几乎所有的对象实例,细分的话,分为 新生代和老年代,在细致一点分为Eden From Survivor 、To Survivor 可以通过-Xms -Xmx 设置大小。

5:方法区,主要存储类信息,常量、静态变量、等类的信息