加载(loading):通过一个特定的名字,找到类或接口的二进制表示,并通过这个二进制表示创建一个类或接口的过程。

链接:是获取类或接口并把它结合到JVM的运行时状态中,以让类或接口可以被执行

初始化:初始化一个类或接口——就是执行这个类或接口的<clinit>方法

运行时常量池(在方法区中)

在类或接口C创建的过程中,根据类或接口C的二进制表示中的常量池来创建运行时常量池。

运行时常量池中有许多运行时常量,运行时常量 有的是符号引用,有的不是符号引用

运行时常量池中所有的引用最初都是符号引用,运行时常量池中的符号引用来自于类或接口C二进制表示中的如下接口

1,类或接口C的符号引用——来自类或接口C的二进制表示中的CONSTANT_Class_info结构

类或接口C的符号引用通过调用方法Class.getName()给出类或接口C的名字A——对于非数组来说,A就是类或接口C的二进制名称(全限定名)

对n维数组来说,名称A以n个[ 开头,然后跟上数组的元素类型的名称

例如。int[ ] [ ]——名称为“[ [ I”,Thread[ ] [ ] [ ]——名称为“[ [ [ Ljava/lang/Thread;”

2,C中字段B的符号引用——来自C的二进制表示中的CONSTANT_Fieldref_info结构

C中字段B的符号引用——给出B的名称和描述符,以及一个指向字段B所在类或接口的符号引用

3,类中某个方法E的符号引用——来自类或接口的二进制表示中的CONSTANT_Methodref_info结构

类中某个方法E的符号引用——给出了方法E的名称和描述符,以及一个指向方法E所在类的符号引用

4,接口中某个方法F的符号引用——来自类或接口的二进制表示中的 CONSTANT_InterfaceMethodref_info结构

接口中某个方法F的符号引用——给出了接口方法F的名称和描述符,以及一个指向方法F所在接口的符号引用

5,method handle的符号引用——来自C的二进制表示中的CONSTANT_MethodHandle_info结构

method handle的符号引用 是 ①指向类或接口的一个字段的符号引用 或②指向类中一个方法的符号引用 或③指向接口中一个方法的符号引用

6,method type的符号引用来自于类或接口的二进制表示中的CONSTANT_Method_info结构

这个符号引用——给出了一个方法描述符

7,调用点限定符(call sit specifier)的符号引用——来自类或接口二进制表示中的CONSTANT_InvokeDynamic_info结构。

这个符号引用可以是  ①作为一个bootstrap method为invokedynamic指令服务的method handle符号引用

②一系列符号引用(类符号引用,method type符号引用,method handle符号引用)或字符串常量(string literals)或运行时常量(run-time constant values)——用来作为bootsrap method静态参数的

③方法名称和方法描述符

!!另外,有一些运行时常量并不是符号引用,而是来自常量池表中的某些项——例如字符串常量(string literals)和运行时常量值

9,字符串常量——是一个指向String实例的引用,来自于类或接口二进制表示中的CONSTANT_String_info结构

CONSTANT_String_info结构——给出Unicode code points序列,用来组成字符串常量

(JAVA要求相同的字符串常量,必须指向相同的String实例)

10,运行时常量值——来自于二进制表示中的 CONSTANT_Integer_infoCONSTANT_Float_infoCONSTANT_Long_info, or CONSTANT_Double_info结构

类的加载,链接和初始化——1运行时常量池(来自于java虚拟机规范英文版本+本人的翻译和理解)的更多相关文章

  1. JVM详解之:类的加载链接和初始化

    目录 简介 加载 运行时常量池 类加载器 链接 验证 准备 解析 初始化 总结 简介 有了java class文件之后,为了让class文件转换成为JVM可以真正运行的结构,需要经历加载,链接和初始化 ...

  2. Java类的加载 链接 初始化

    原文地址 Java类的加载.链接和初始化.Java字节代码的表现形式是字节数组(byte[]),而Java类在JVM中的表现形式是java.lang.Class类的对象.一个Java类从字节代码到能够 ...

  3. <JVM中篇:字节码与类的加载篇>04-再谈类的加载器

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  4. java虚拟机规范-加载、链接与初始化

    前言 java虚拟机是java跨平台的基石,本文的描述以jdk7.0为准,其他版本可能会有一些微调.java代码本身并不能为jvm识别,实际上在jvm中的表现形式为Class对象,一个java类从字节 ...

  5. JVM 类的加载机制

    在对类的实例化之前.JVM 一般会先进行初始化 主要经过如下几个阶段: 1.加载                       类加载的第一阶段,类加载时机有两个: 1.预加载:当虚拟机启动时,会预加载 ...

  6. 24.类的加载机制和反射.md

    目录 1类的加载连接和初始化 1.1类的加载过程 1.2类的加载器 1.2.1类的加载机制 1类的加载连接和初始化 1.1类的加载过程 类的加载过程简单为分为三步:加载->连接->初始化 ...

  7. 类的加载classload和类对象的生成

    在Java中最重要的可以说就是类的加载了.不论我们编写的功能多么复杂,或是多么简单,永远逃离不开的,就是将这个类从class文件加载到JVM中来. 类的加载过程 首先我们要了解一下类的加载过程,包括: ...

  8. 透过现象看本质:Java类动态加载和热替换

    摘要:本文主要介绍类加载器.自定义类加载器及类的加载和卸载等内容,并举例介绍了Java类的热替换. 最近,遇到了两个和Java类的加载和卸载相关的问题: 1) 是一道关于Java的判断题:一个类被首次 ...

  9. Java类的加载、链接和初始化

    一.Java的类加载机制回顾与总结: 我们知道一个Java类要想运行,必须由jvm将其装载到内存中才能运行,装载的目的就是把Java字节代码转换成JVM中的java.lang.Class类的对象.这样 ...

随机推荐

  1. PHP key() 函数

    ------------恢复内容开始------------ 实例 从当前内部指针位置返回元素键名: <?php$people=array("Peter","Joe ...

  2. PHP stripslashes() 函数

    实例 删除反斜杠: <?php高佣联盟 www.cgewang.comecho stripslashes("Who's Peter Griffin?");0.000.00.. ...

  3. 基于AspectCore打造属性注入

    前言 源自于晓晨在成都.net社区群的一篇文章 <晓晨的ASP.NET Core 奇淫技巧之伪属性注入> 他的思路是 Ioc容器替换 ControllerActivator,因为只能在控制 ...

  4. 加密模块hashlib模块(* *)

    用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 越往后加密算法越复杂,这些算法都是不可逆的,MD5 算法 ...

  5. 最新版 源码编译 docker

    前言: 最近想研究 docker 源码,那么要研究源码第一步就是学会通过源码编译.然后在网上查找了很多,都是比较老的版本.目前官最新的版本是 18.09.经过一番探索之后,终于成功编译了 下面我把我的 ...

  6. UI自动化填写问卷(selenium)+定时任务(懒人必备)

    1.自动填报 UI自动化 selenium 开发程序动机:天天有人催着填写问卷,弄的头大.主要还是懒的每天一个个去填写内容. 开发总时长:2个小时:学习+开发+修改 遇到的小问题: 在自动化填写地图的 ...

  7. Spring Boot 数据缓存 - EhCache

    EhCache 集成 EhCache 是一个纯 Java 的进程内缓存框架,具有快速.精干等特点,是 Hibernate 中默认的 CacheProvider. 在 Spring Boot 中集成 E ...

  8. Weblogic 连接 RMI 服务报错 Connection refused

    WebLogic 连接 RMI 服务报错 Connection refused 访问 WebLogic RMI 服务报错,连接被拒绝,连接超时. 奇怪的是,报错的 host 根本不是我要访问的. 报错 ...

  9. Tutte 定理与 Tutte–Berge 公式

    Tutte theorem 图 \(G=(V,E)\) 有完美匹配当且仅当满足 \(\forall U\subseteq V,o(G-U)\le|U|,o(X)\) 表示 X 子图的奇连通块数. Tu ...

  10. 【Mysql】SpringBoot阿里Druid数据源连接池配置

    一.pom.xml添加 <!-- 配置数据库连接池 --> <dependency> <groupId>com.alibaba</groupId> &l ...