zoukankan      html  css  js  c++  java
  • JVM类加载(1)—加载

    1、加载:

    查找并加载类,将.class文件中的二进制数据读入到内存中,放在运行时数据区的方法内,然后在堆内创建一个java.lang.class对象用来封装类在方法区内的数据结构。并且向程序员提供了访问方法区内的数据结构的接口,程序中类的实例通过getClass()方法获取类在堆中的class对象,通过class对象可以完成对方法区中类数据结构的访问。

    class文件的加载方式:

    (1)、本地系统加载

    (2)、网络下载.class文件

    (3)、jar包、zip文件中获取

    (4)、从专有数据库中提取.class文件

    (5)、将Java源文件动态编译为.class文件

    类加载器的类型:

    Java虚拟机自带的加载器

    (1)、根类加载器(BootStrap),C++实现,Java程序员无法在代码中获取到该类

    (2)、扩展类加载器(Extension),Java代码实现

    (3)、系统类加载器(System),又叫应用加载器,Java代码实现

    用户自定义的加载器

    继承java.lang.ClassLoader,用户可以定制类的加载方式

    Java规范允许类加载器在预料到某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到class文件缺失或存在错误,类加载器会在首次主动使用该类时才报告错误(LinkageError错误), 如果这个类一直没有被程序使用,那么类加载器就不会报错。

    类被加载进内存之后后就进入连接阶段。

  • 相关阅读:
    tensorboard的log查看方法
    liunx系统中安装lua以及torch
    maven安装问题解决
    使用git将代码上传到GitHub
    解决引入keras后出现的Using TensorFlow backend的错误
    ubuntu下 pycharm使用andcoda下的tensorflow
    HTTP概览
    c++容器
    C++注意
    Strint类成员
  • 原文地址:https://www.cnblogs.com/qiyexue/p/6822183.html
Copyright © 2011-2022 走看看