Saul's blog Saul's blog
首页
后端
分布式
前端
更多
分类
标签
归档
友情链接
关于
GitHub (opens new window)

Saul.J.Wu

立身之本,不在高低。
首页
后端
分布式
前端
更多
分类
标签
归档
友情链接
关于
GitHub (opens new window)
  • Java入门基础

  • Java核心基础

    • 多线程

    • Java常用类

    • 枚举类与注解

    • Java集合

    • 数据结构与算法

    • 泛型

    • IO流

    • 网络编程

    • 反射

      • 反射概述
      • Class类
      • 类加载器
        • ClassLoader
        • Demo
      • 访问字段
      • 调用方法
      • 调用构造方法
      • 获取继承关系
      • 动态代理
    • 函数式编程

  • 设计模式

  • Web开发

  • SpringBoot

  • 微服务

  • Elasticsearch

  • 运维

  • 后端
  • Java核心基础
  • 反射
SaulJWu
2021-01-12

类加载器

image-20210112154939556

  • 类加载的作用:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后在堆中生成一个代表这个类的java.lang.Class对象,作为方法区中类数据的访问入口。
  • 类缓存:标准的JavaSE类加载器可以按要求查找类,但一旦某个类被加载到类加载器中,它将维持加载(缓存)一段时间。不过JVM垃圾回收机制可以回收这些Class对象。

# ClassLoader

类加载器作用是用来把类(class)装载进内存的。JVM 规范定义了如下类型的类的加载器。

image-20210112155035223

# Demo

//1.获取一个系统类加载器
ClassLoaderclassloader= ClassLoader.getSystemClassLoader();
System.out.println(classloader);

//2.获取系统类加载器的父类加载器,即扩展类加载器
classloader= classloader.getParent();
System.out.println(classloader);

//3.获取扩展类加载器的父类加载器,即引导类加载器
classloader= classloader.getParent();
System.out.println(classloader);

//4.测试当前类由哪个类加载器进行加载
classloader= Class.forName("exer2.ClassloaderDemo").getClassLoader();
System.out.println(classloader);

//5.测试JDK提供的Object类由哪个类加载器加载
classloader = Class.forName("java.lang.Object").getClassLoader();
System.out.println(classloader);

//*6.关于类加载器的一个主要方法:getResourceAsStream(String str):获取类路径下的指定文件的输入流
InputStreamin = null;•in = this.getClass().getClassLoader().getResourceAsStream("exer2\\test.properties");
System.out.println(in);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
帮我改善此页面 (opens new window)
上次更新: 2021/01/20, 05:46:57
Class类
访问字段

← Class类 访问字段→

最近更新
01
zabbix学习笔记二
02-28
02
zabbix学习笔记一
02-10
03
Linux访问不了github
12-08
更多文章>
Theme by Vdoing | Copyright © 2020-2022 Saul.J.Wu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式