• 37 方法区的内部结构


    在这里插入图片描述

    方法存储什么

    在这里插入图片描述

    方法区存储信息主要:类型信息,域(Field)信息,方法(Method)信息,常量,静态变量,即时编译器编译后的代码缓存

    1、类型信息

    对每个加载的类型(类class、接口、枚举、注解),jvm必须在方法区存储以下类型信息

    (1)类型的完整有效名称(全名=报名.类名)

    (2)类型直接父类的完整有效名(接口和java.lang.Object,没有父类)

    (3)类型的修饰符(public,abstract,final的某个子集)

    (4)类型直接接口的一个有序列表

    2、域(Field)信息

    (1)保存类型的所有域的相关信息以及域的声明顺序

    (2)域的相关信息:域名称,域类型,域修饰符(public,private,protected,static,final,volatile,transient

    3、方法(Method)信息

    jvm保存所有方法的以下信息,同域信息一样的包括声明顺序

    (1)方法名称
    (2)方法返回参数(或者void)
    (3)方法参数的数量和类型(按顺序)
    (4)方法的修饰符(public,private,protected,static,final,synchronized,native,abstract)
    (5)方法的字节码,操作数栈、局部变量表及大小(abstract和native除外)
    (6)异常表(abstract和native除外),每个异常处理的开始位置,结束位置,代码处理在程序计数器中的偏移地址、被捕获的异常类的常量池索引。

    4、常量池

    一个有效的字节码文件除了包含类的版本信息,字段,方法以及接口等描述信息外,还包含一项信息那就是常量池,包含各种字面量(数量值,字符串值)和对类型(类),域和方法的符号引用。
    常量池,可以看作是一个表,虚拟机指令根据这张常量表找到要执行的类名,方法名,参数类型,字面量等类型
    (1)方法区,内部包含了运行时常量池
    (2)字节码文件,内部包含了常量池

    为什么需要常量池

    在这里插入图片描述

    运行时常量池

    在这里插入图片描述

    方法区使用举例

    在这里插入图片描述
    程序的执行过程如下图

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    列表和标签企业报告版的完整报告解决方案
    关于python的数据可视化与可视化:数据读取
    JMeter—逻辑控制器
    单位建数字档案室的意义和作用
    使用ffmepg实现多路视频流合并
    Spring中事务的传播行为有哪些
    css的表格属性以及边框属性
    数据结构与算法C语言版学习笔记(5)-串,匹配算法、KMP算法
    AES加解密概念
    C# 实现 Linux 视频聊天、远程桌面(源码,支持信创国产化环境,银河麒麟,统信UOS)
  • 原文地址:https://blog.csdn.net/m0_37294838/article/details/127114644