JVM运行时内存模型

JDK1.7版本图

 

一,栈
   基本数据类型的局部变量是直接保存在栈中。

栈帧:一个栈里面会包含多个栈帧,每一个栈帧代表一个方法的开始到结束,它涵盖了整个方法运行期间所有的操作和数据

栈帧

  1:局部变量表(变量)

    局部变量的值相同时,jvm对此进行优化,引用同一个值

  2:操作数栈(压栈,弹栈操作)

    汇编

    不同的push就是不同长度的数据进行压栈

  3:动态链接

  4:方法的返回地址

二,堆
  虚拟机启动时创建。这个区域是用来存放对象实例的

每当运行一个Main方法,都会启动一个JVM的实例进程。

当一个实例没有任何引用的时候,它就是jvm的回收对象

 

三,方法区(永久带)

   存放类于接口的所有信息

  a)名称

  b)访问修饰符

  c)类的字段,类,名称,

  d)方法,返回值,

  e)常量池(字面量)

JDK1.8后将方法区合并到堆里面,合并后开辟一个元空间(Metaspace)

 

学习笔记未完待续……

posted @ 2017-11-27 11:21  信息界的搬运工  阅读(169)  评论(0编辑  收藏  举报