Lmxy1990 ' Blog

java内存模型

运行时的内存模型


  • java目前使用的虚拟机是HotSpot.运行时的内存模型可以简单分为:方法栈,堆,程序计数器,虚拟机栈,本地方法栈.
  • 其中堆与方法栈是所有线程共享的.
  • 虚拟机栈与本地方法栈,程序计数器是线程独享的.
  • 程序计数器,虚拟机栈的生命周期与线程的周期是一样的.

程序计数器

  • 程序计数器可以看作是当前线程的运行状态.进行指令分配的一小段内存块.它的功能是记录当前线程的一些状态,值.以便于线程的唤醒,启动.异常处理等线程功能都由它来完成.

虚拟机栈

  • 虚拟机栈中保存的是局部变量,操作数栈,程序的出口信息.动态连接等.它的主要作用是存储线程执行的一些数据(线程内部数据).

本地方法栈

  • 本地方法栈也是用来保存方法内的变量(局部变量),动态连接,出口数据等线程私有的数据.只是它对应的是本地方法,而虚拟机栈对应的是java的方法.

方法栈

  • 方法栈是所有线程共享的.它主要保存所有类的信息,常量,静态成员变量.方法模型的基本信息.非静态成员变量也保存在此.所以成员变量需要考虑线程安全性的问题.

  • java堆是内存中最大的一部分,几乎所有的对象实例都保存于此.GC回收最主要部分也是这里.

End

坚持原创技术分享,您的支持将鼓励我继续创作!