java 内存模型

java 内存模型(jvm 内存模型)可分为4-5个区域,具体如下:

  1,程序计数器 : 很小的一块内存区域,占用的内存空间几乎可以忽略不计;它是当前线程所执行的字节码的行号指示器,用于选取下一条需要执行的指令;一个程序计数器属于一条线程,所以程序计数器是线程隔离的,生命周期等同于线程的生命周期;

  2,栈:同程序计数器一般,栈也隶属于线程,是线程隔离的;栈中保存的是当前执行方法栈帧:每一个方法执行时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接(这个不懂,希望大神之处)、方法出口等信息;

  局部变量表说明:局部变量表或者说整个栈,它所存储的都是内存地址,具体的数据内容都是存储在堆、或者常量池、或静态池中;

  栈特殊说明:在不同的虚拟机实现中,栈可能被分为:虚拟机栈和本地方法栈,而hotSpot虚拟机(sun公司开发的)则是把虚拟机栈和本地方法栈合二为一,这也是java 内存模型可分为4-5个的原因; 

  3,堆: 存放实例化的对象,即使用new关键字创建的对象都在这里;堆是线程共享的;

  4,方法区:存放虚拟机加载的类的信息,以及常量和静态变量;方法区也是线程共享的;

java 内存模型示例图:

java 内存模型

posted @ 2018-09-05 16:39  大雨如注  阅读(161)  评论(0编辑  收藏  举报