java运行数据区域

       java虚拟机执行java程序的过程中会把它所管理的内存划分为若干不同的数据区域;java se 7版所管理的内存将会包括以下几个运行数据区域,如下图所示: 

         现在分别来解释每一个部分的作用:

1.程序计数器

         程序计数器(Program Counter Register) 是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。

作用:(1)字节码解释工作就是通过程序计数器来选取下一条执行语句;

          (2) 线程切换过程中,用来记录每个线程的执行到的位置;

2.java虚拟机栈

         虚拟机栈(java virtual machine statck)是线程私有的,它的生命周期与线程的生命周期相同。

作用:(1) 用于存储动态链接,局部变量表,方法接口等信息,每个方法执行完成就对应着一个栈帧在虚拟机栈中出栈;

3.本地方法栈

        本地方法栈(native method stack)与java虚拟机栈的作用相似。

作用:(1)它为本地native 方法服务

4.java堆

          java堆(java heap)所管理的内存中最大的一块。由所有线程共享,在虚拟机启动时创建。

  作用:(1)存储对象实例;

5.方法区

      方法区(Method Area)与java堆一样,是各个线程共享的内存区域;当方法区无法满足内存分配需求时,抛出OutOfMemoryError。

作用:(1) 存储类信息,常量,静态变量、即时编译器编译后的代码等数据,

猜你喜欢

转载自blog.csdn.net/zy345293721/article/details/82252181
今日推荐