zoukankan      html  css  js  c++  java
  • JVM运行时内存模型

    JDK1.7版本图

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

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

    栈帧

      1:局部变量表(变量)

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

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

        汇编

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

      3:动态链接

      4:方法的返回地址

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

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

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

    三,方法区(永久带)

       存放类于接口的所有信息

      a)名称

      b)访问修饰符

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

      d)方法,返回值,

      e)常量池(字面量)

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

    学习笔记未完待续……

  • 相关阅读:
    JVM(5)之 GC之标记
    JVM(4)之 使用MAT排查堆溢出
    JVM(3) 之 内存分配与回收策略
    JVM(2)之 JAVA堆
    JVM(1)之 JAVA栈
    MySQL查询时报错Illegal mix of collations
    struts2 基础学习
    python3.4 + pycharm安装与使用
    Pycharm激活
    IntelliJ IDEA 2018.2激活
  • 原文地址:https://www.cnblogs.com/javaLin/p/7903291.html
Copyright © 2011-2022 走看看