栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JVM内存模型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JVM内存模型

一、JVM简述

  1. 个人对JVM的理解:是一个专门运行Java程序的小型操作系统,随着程序的启动而启动,结束而结束
  2. JVM的组成:
    1. 线程共享的区域:
      1. 方法区:存放instanceKlass元数据、常量、静态变量
      2. 堆:存放对象,包括:对象头、元数据指针、实例数据
    2. 线程独享的区域:
      1. 栈:存放方法的局部变量表、操作数栈、动态链接、方法出口

二、JVM加载对象举例

  1. 举例代码:
	A a=new A();
    public Class A{
        public int x;
        public B b;
        public static int y;
        public string s;
        public void test(){ 
            int i=1;
            i++;
            C c=new C();
        }
    }
  1. 具体步骤:
    1. main方法放入线程栈帧,加载类A

      1. 在方法区中生成A的instanceKlass,表示其元数据,里面存放A的类型信息、常量、字段信息、方法信息、静态变量、静态链接
      2. 并在堆中创建对应的instanceOopDesc来表示java.lang.Class对象,里面存放A类的镜像Class对象,包括对象头、元数据指针、实例数据
      3. 在堆的Class对象中初始化静态变量
      4. 在堆中生成对象a,并作为局部变量表中a的引用
    2. 上述过程中会加载类B,过程与加载类A一样

    3. test方法加载到线程栈帧中,并执行:

      1. 局部变量表给局部变量赋值,操作数栈中操作 ++ 操作
      2. 加载类C,过程与加载类A一样
      3. 在堆中生出对象c,作为局部变量表中c的引用,即为动态链接
  2. 图例解释:
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/672719.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号