java中内存分配ppt课件_java-jvm虚拟机原理课件.ppt

java-jvm虚拟机原理课件

java虚拟机原理介绍 目录 Java虚拟机 1.java虚拟机的生命周期 2.java虚拟机的体系结构 Java class文件 1.magic(魔数) 2.minor_version和major_version 3.constant_pool_count和constant_pool 类型的生命周期 1.类型的装载、连接和初始化 2.对象的生命周期 3.卸载类型 连接模型 动态连接和解析 垃圾收集 Java虚拟机生命周期 每运行一个java程序,便得到JAVA虚拟机的实例 每个Java程序都运行于它自己的Java虚拟机实例中 当程序关闭退出,这个虚拟机实例也就随之消亡 程序本身也能够通过调用Runtime类或者System类的exit()方法退出。? Java虚拟机体系结构 在Java假虚拟机规范中,一个虚拟机实例的行为时分别按照子系统、内存区、数据类型以及指令这几个术语来描述的。这些组成部分一起展示了抽象的虚拟机的内部抽象体系结构。? 1)所有的线程都共享方法区,方法区必须被设计为线程安全的,方法区大小不固定 2)方法区 存储以下类型信息: 类的全限定名 超类的全限定名 是接口还是类 类的访问修饰修饰符 该类的【常量池】 字段信息 方法信息 类(静态)变量 :类变量是由所有类实例共享的,即使没有类实例,也可以访问 一个到类ClassLoader引用 一个到类的引用 3)方法表 运行时数据区--Java中的栈 每启动一个新的线程,java虚拟机都会为它分配一个java栈,java栈上的都是此线程私有的 每当启用一个线程时,JVM就为他分配一个Java栈,栈是以帧为单位保存当前线程的运行状态。【当前方法,当前帧,当前类,当前常量池】 每当线程调用一个Java方法时,JVM就会在该线程对应的栈中压入一个帧,这个帧自然就成了当前帧。当执行这个方法时,它使用这个帧来存储参数、局部变量、中间运算结果等等。 Java栈上的所有数据都是私有的。任何线程都不能访问另一个线程的栈数据。 Java栈和帧在内存中也不必是连续的,帧可以分布在连续的栈里,也可以分布在堆里 栈帧 栈帧由三部分组成:局部变量区、操作数栈和帧数据区 Java 的class文件 Class文件的内容 在class文件中,可变长度项的大小和长度位于其实际数据之前,这个特性使得class文件数据流可以被顺序解析,首先读出项的大小,然后读出项数据 1.magic(魔数) 4个字节 2.minor_version和major_version 4个字节 3.constant_pool_count 和 constant_pool 4.access_flags 2个字节 5.this_class 2个字节 6.super_class 2个字节 7.interfaces_count 和interfaces 8.fields_count 和 fields 9.methods_count 和 fields 10.attributes_count 和 attributes Java代码编译和执行的整个过程包含了以下三个重要的机制: 1.Java源码编译机制 2.类加载机制 3.类执行机制 Java代码编译是由Java源码编译器来完成,流程图如下所示: Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: class文件由以下部分组成: 1.结构信息 包括class文件格式版本号及各部分的数量与大小的信息 2.元数据 对应于Java源码中声明与常量的信息。包含类/继承的超类/实现的接口的声明信息、域与方法声明信息和常量池 3.方法信息。 对应Java源码中语句和表达式对应的信息。包含字节码、 异常处理器表、求值栈与局部变量区大小、求值栈的类型记录、调试符号信息 Java中的类加载机制 JVM的类加载是通过ClassLoader及其子类来完成的,类的层次关系和加载顺序可以由下图来描述: Bootstrap ClassLoader /启动类加载器 $JAVA_HOME中jre/lib/rt.jar里所有的class,由C++实现,不是ClassLoader子类 Extension ClassLoader/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值