精华内容
下载资源
问答
  • Java 加载过程

    2021-05-06 13:51:06
    通过一个的全限定名获取的二进制流。 • 将该二进制流中的静态存储结构转化为方法运行时数据结构。 • 在内存中生成该的 Class 对象,作为该的数据访问入口。 2. 验证 验证的目的是为了确保 Class ...

    Java 类加载过程

    1. 加载
    加载是类加载的第一个过程,在这个阶段,将完成一下三件事情:
    • 通过一个类的全限定名获取该类的二进制流。
    • 将该二进制流中的静态存储结构转化为方法去运行时数据结构。
    • 在内存中生成该类的 Class 对象,作为该类的数据访问入口。

    2. 验证
    验证的目的是为了确保 Class 文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成以下四种验证:
    • 文件格式验证:验证字节流是否符合 Class 文件的规范,如主次版本号是否在当前虚拟机范围内,常量池中的常量是否有不被支持的类型.
    • 元数据验证:对字节码描述的信息进行语义分析,如这个类是否有父类,是否集成了不被继承的类等。
    • 字节码验证:是整个验证过程中最复杂的一个阶段,通过验证数据流和控制流的分析,确定程序语义是否正确,主要针对方法体的验证。如:方法中的类型转换是否正确,跳转指令是否正确等。
    • 符号引用验证:这个动作在后面的解析过程中发生,主要是为了确保解析动作能正确执行。

    3. 准备
    准备阶段是为类的静态变量分配内存并将其初始化为默认值,这些内存都将在方法区中进行分配。准备阶段不分配类中的实例变量的内存,实例变量将会在对象实例化时随着对象一起分配在 Java 堆中。

    public static int value=123;//在准备阶段 value 初始值为 0 。在初始化阶段才会变为 123 。
    

    4. 解析
    该阶段主要完成符号引用到直接引用的转换动作。解析动作并不一定在初始化动作完成之前,也有可能在初始化之后。

    5. 初始化
    初始化时类加载的最后一步,前面的类加载过程,除了在加载阶段用户应用程序可以通过自定义类加载器参与之外,其余动作完全由虚拟机主导和控制。到了初始化阶段,才真正开始执行类中定义的Java 程序代码。

    6. 使用
    程序调用

    7. 卸载
    垃圾回收(GC)

    展开全文
  • Java类加载过程

    2020-10-14 11:05:31
    通过一个的全限定名获取的二进制流。 •将该二进制流中的静态存储结构转化为方法运行时数据结构。 •在内存中生成该的Class对象,作为该的数据访问入口。 2.验证 验证的目的是为了确保Class文件的...

    Java类加载需要经历一下7个过程:
    1.加载
    加载是类加载的第一个过程,在这个阶段,将完成一下三件事情:
        •通过一个类的全限定名获取该类的二进制流。
        •将该二进制流中的静态存储结构转化为方法去运行时数据结构。
        •在内存中生成该类的Class对象,作为该类的数据访问入口。
    2.验证
    验证的目的是为了确保Class文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成以下四钟验证:
        •文件格式验证:验证字节流是否符合Class文件的规范,如主次版本号是否在当前虚拟机范围内,常量池中的常量是否有不被支持的类型.
        •元数据验证:对字节码描述的信息进行语义分析,如这个类是否有父类,是否集成了不被继承的类等。
        •字节码验证:是整个验证过程中最复杂的一个阶段,通过验证数据流和控制流的分析,确定程序语义是否正确,主要针对方法体的验证。如:方法中的类型转换是否正确,跳转指令是否正确等。
        •符号引用验证:这个动作在后面的解析过程中发生,主要是为了确保解析动作能正确执行。
    3.准备
    准备阶段是为类的静态变量分配内存并将其初始化为默认值,这些内存都将在方法区中进行分配。准备阶段不分配类中的实例变量的内存,实例变量将会在对象实例化时随着对象一起分配在Java堆中。publicstaticintvalue=123;//在准备阶段value初始值为0。在初始化阶段才会变为123。
    4.解析
    该阶段主要完成符号引用到直接引用的转换动作。解析动作并不一定在初始化动作完成之前,也有可能在初始化之后。
    5.初始化
    初始化时类加载的最后一步,前面的类加载过程,除了在加载阶段用户应用程序可以通过自定义类加载器参与之外,其余动作完全由虚拟机主导和控制。到了初始化阶段,才真正开始执行类中定义的Java程序代码。
    6.使用
    7.卸载

    展开全文
  • 浅谈java类加载过程

    2018-10-10 16:04:15
    1. 通过一个的全限定名获取的二进制流。 2. 将该二进制流中的静态存储结构转化为方法运行时数据结构。 3. 在内存中生成该的Class对象,作为该的数据访问入口。 验证 验证的目的是为了确保Class文件的...

    java类加载需要经历一下7个过程:

     

    加载
    加载时类加载的第一个过程,在这个阶段,将完成一下三件事情:
    1. 通过一个类的全限定名获取该类的二进制流。
    2. 将该二进制流中的静态存储结构转化为方法去运行时数据结构。
    3. 在内存中生成该类的Class对象,作为该类的数据访问入口。

    验证
    验证的目的是为了确保Class文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成以下四钟验证:
    1. 文件格式验证:验证字节流是否符合Class文件的规范,如主次版本号是否在当前虚拟机范围内,常量池中的常量是否有不被支持的类型.
    2. 元数据验证:对字节码描述的信息进行语义分析,如这个类是否有父类,是否集成了不被继承的类等。
    3. 字节码验证:是整个验证过程中最复杂的一个阶段,通过验证数据流和控制流的分析,确定程序语义是否正确,主要针对方法体的验证。如:方法中的类型转换是否正确,跳转指令是否正确等。
    4. 符号引用验证:这个动作在后面的解析过程中发生,主要是为了确保解析动作能正确执行。

    准备
    准备阶段是为类的静态变量分配内存并将其初始化为默认值,这些内存都将在方法区中进行分配。准备阶段不分配类中的实例变量的内存,实例变量将会在对象实例化时随着对象一起分配在Java堆中。

    public static int key=123;//在准备阶段key初始值为0 。在初始化阶段才会变为123 。

     

    解析
    该阶段主要完成符号引用到直接引用的转换动作。解析动作并不一定在初始化动作完成之前,也有可能在初始化之后。

    初始化
    初始化时类加载的最后一步,前面的类加载过程,除了在加载阶段用户应用程序可以通过自定义类加载器参与之外,其余动作完全由虚拟机主导和控制。到了初始化阶段,才真正开始执行类中定义的Java程序代码。

    展开全文
  • 可以导出到Excel,可以根据Excel字段文档生成Sql,数据库表误删除又没有备份的时候就很有帮助了,而且支持反向的根据生成的Model生成创建数据库表的Sql。 注:暂时不支持索引及外键等需要关联另外一张表的数据...
  • 通过类名查找获取此类的二进制流 查找war、jar、网络中获取... 将该所代表的静态存储结构转化为方法区运行时数据 可反推方法区(持久代)保存了信息 在内存中生成一个代表该的对象,作为方法区这个...

    Java类加载过程

    加载

    • 通过类名去查找获取此类的二进制流
    查找war、jar、网络中获取...
    
    • 将该类所代表的静态存储结构转化为方法区运行时数据
    可反推方法区(持久代)保存了类信息
    
    • 在内存中生成一个代表该类的对象,作为方法区这个类的放问入口。

    验证

    因为class二进制流可以来源的地方很多,所以需要确保该class文件的字节流中包含的信息复合虚拟机要求,不会伤害虚拟机自身。主要分为4个阶段:

    • 文件格式验证:编码、头部
    • 元数据验证 :java语义校验
    - 这个类是否有父类,是否继承了不能继承的类(final)
    - 这个类是否实现了父类的所有抽象方法
    
    • 字节码验证
    如检查int中是否存了long的数据、指令会不会跳出方法体以外
    
    • 符号引用验证
    主要是在接下来解析时验证,判断引用的对象是否能找到对应的类、是否能运行被访问
    

    准备

    为类变量赋初值(注:类变量是被static修饰的变量)

    解析

    对类、接口、字段、方法进行解析

    初始化

    程序员通过程序制定主观计划区初始化类变量和其他资源

    类加载器

    Hotspot从jvm角度讲,只有两种类加载器:

    1. 启动类加载器:底层c++实现,是虚拟机的一部分
    2. 其他的类加载齐:java实现,独立于虚拟机外部,全部继承于java.lang.ClassLoader.

    双亲委派模型

    工程过程
    1. 一个类加载器收到了类的加载请求,首先检查请求的类是否已经被加载过,如果没有
    2. 自己先不做加载,而是把这个请求委派给父类加载器
    3. 父类加载器继续向上抛,只有当父类加载器反馈自己无法完成这个加载请求,子类才会尝试自己加载

    原理

    // 首先检查请求的类是否已经被加载过
    Clas c = findLoadedClass(name);
    if(c == null){
        try{
            if(parent != null ){
                c = parent.loadClass(name,false);
            }else{
            //如果没有父类加载器,则尝试用启动类加载器加载
                c = findBootstrapClassOrNull(name);
            }
        }catch(ClassNotFoundException e){
            如果父类抛出改方法,证明父类加载器不能完成加载请求
        }
        if(c == null){
            // 调用本身的findcalss方法加载。
            c = findClass(name);
        }
    }
    

    优点

    实现了java类加载的一种带有优先级层次的关系,保证了java程序的稳定运作。

    展开全文
  • 通过类的限定名称获取该类的二进制流 b.将该二进制流中的静态存储结构转化为方法运行时数据结构 c.在内存中生成该类的class对象,作为该类的数据访问入口 2.验证 验证的目的是为了确保class文件的字节流中的信息...
  • 什么是加载器虚拟机设计团队把加载阶段中的”通过一个的全限定名来获取描述此类的二进制字节流”这个动作放到了Java虚拟机外部实现,以便让应用程序自己决定如何去获取所需要的,而实现这个动作的代码模块...
  • java反射

    2020-07-02 11:07:22
    反射机制,在程序运行过程中,能通过反射机制获取类的属性方法等信息。 2.Java类的加载 Java在真正需要使用一个时才会加载,而不是在启动程序时就加载所有的加载是将的.class 文件加载到内存中,放在...
  • JAVA反射

    2018-04-03 13:58:31
    反射:就是通过class文件对象,使用该文件中的成员变量,构造方法,成员方法。 Class: 成员变量 Field 构造方法 Constructor 成员方法 Method 获取class文件对象的方式: A.Object的getClass()方法...
  • Java反射

    2018-09-26 15:50:47
    获取当前线程的上下文加载器加载类文件,此时会在方法区生成的元信息Class对象,保存在的各种信息,构造函数,成员方法,静态方法,实例域,静态域,加载器等等信息 通过Class对象获取类的构造函数...
  • Java面试

    2019-01-15 20:25:28
    通过一个的全限定名获取的二进制流。 将该二进制流中的静态存储结构转化为方法运行时数据结构。 在内存中生成该的 Class 对象,作为该的数据访问入口。 验证 验证的目的是为了确保 Class 文件的字节流中...
  • 1、Java类加载过程Java类加载需要经历一下7个过程:加载通过一个的全限定名获取的二进制流。将该二进制流中的静态存储结构转化为方法运行时数据结构。在内存中生成该的Class对象,作为该的数据访问入口...
  • 1、Java类加载过程Java类加载需要经历一下7个过程:加载通过一个的全限定名获取的二进制流。将该二进制流中的静态存储结构转化为方法运行时数据结构。在内存中生成该的Class对象,作为该的数据访问入口...
  • Java学习之反射

    2017-05-25 18:20:22
    反射就是通过字节码文件对象使用成员 例如:Student.java的字节码文件是Student.class,可以把这个字节码文件看成一个对象,这个对象就叫做字节码文件对象,对应的是Class 二、获取字节码文件 (1)Object...
  • 尹成JAVA快速入门

    2020-12-08 15:12:43
    例如,Java中的是根据需要载入的,甚至有些是通过网络获取的。   尹成老师带你步入Java语言基础的殿堂,讲课生动风趣、深入浅出,全套视频内容充实,整个教程以Java语言为核心,完整精彩的演练了Java语言操作...
  • java基础27_反射

    2014-04-18 10:35:07
    (1)通过字节码文件对象使用构造方法,成员变量,成员方法。 (2)如何获取字节码文件对象: A:通过Object的getClass()方法。 B:通过数据类型的class静态属性。 C:通过Class静态方法forName()。 (3)反射...
  • 我们编写的java文件通过javac编译后生成class类文件,如果我要运行这个程序,首先虚拟机里面会有一个加载器(Class loader),会把这个加载到虚拟机(jvm)里面,存放在方法区(Method Area)里面,我们使用...
  • 加载 加载是加载的第一个过程,在这个阶段,将完成一下三件事情: • 通过一个的全限定名获取的二进制流。 • 将该二进制流中的静态存储结构转化为方法运行时数据结构。 • 在内存中生成该的 Class ...
  • java学习day24

    2014-12-23 22:26:43
    (1)反射:在程序运行时期,是通过class文件对象,使用构造方法,成员变量,成员方法。 (2)获取class文件对象 1:Object的getClass()方法 2:数据类型的静态的class属性 3:ClassforName()静态方法 (3)反射...
  • 通过一个的全限定名获取的二进制流。2.将该二进制流中的静态存储结构转化为方法运行时数据结构。3.在内存中生成该的 Class 对象,作为该的数据访问入口。验证验证的目的是为了确保 Class 文件的字节流中...
  • 通过一个的全限定名获取的二进制流。2.将该二进制流中的静态存储结构转化为方法运行时数据结构。3.在内存中生成该的 Class 对象,作为该的数据访问入口。验证验证的目的是为了确保 Class 文件的字节流中...
  • (1)反射:在程序运行时期,是通过class文件对象,使用构造方法,成员变量,成员方法。 (2)获取class文件对象 1:Object的getClass()方法 2:数据类型的静态的class属性 3:ClassforName()静态方法
  • Guide 哥注:权限管理系统在企业级的项目中一般都是非常重要的,如果你需求实际了解一个不错的权限系统是如何设计的话,推荐你可以参考下面这些开源项目。 Spring-Cloud-Admin :Cloud-Admin 是国内首个基于 ...
  • 1.4.1 (Class):Java世界中一物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的起点 15 .1.5 名词解释 16 1.5.1 JDK和Java平台 16 1.5.2 Java编译器(Java Compiler)...
  • java范例开发大全

    2013-03-08 20:06:54
    实例147 随机读写Java类文件 221 第3篇 Java面向对象编程 第8章 面向对象(教学视频:72分钟) 226 8.1 226 实例148 简单的通讯录 226 实例149 简单的长度单位转换 227 实例150 卡车和卡车司机之间的关系 229...
  • java--反射

    2015-07-09 14:18:17
     (1)反射:在程序运行时期,是通过class文件对象,使用构造方法,成员变量,成员方法。  (2)获取class文件对象  1:Object的getClass()方法  2:数据类型的静态的class属性  3:ClassforName()...
  • java 面试题 总结

    2009-09-16 08:45:34
    redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。 20、EJB与JAVA BEAN的区别? Java Bean 是可复用...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 130
精华内容 52
关键字:

java通过类去获取静态文件

java 订阅