类的加载

类的加载?

1、什么是类的加载?(注明:这里引用)

加载Java类到虚拟机中,。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class类的一个实例。每个这样的实例用来表示一个 Java 类。通过此实例的 newInstance()方法就可以创建出该类的一个对象。实际的情况可能更加复杂,比如 Java 字节代码可能是通过工具动态生成的,也可能是通过网络下载的。Java应用的开发人员一般都接触不到类加载器,Java 虚拟机默认的行为就已经足够满足大多数情况的需求了。不过如果遇到了需要与类加载器进行交互的情况,而对类加载器的机制又不是很了解的话,就很容易花大量的时间去调试 ClassNotFoundException和 NoClassDefFoundError等异常。

2、为什么要研究类加载?

我觉得了解这个东西就行了,实际上除了面试一般很少会用到的。综合来说,一般是用于web容器和OSGI。

3、双亲委派模型?

先看缓存中有没有加载到,然后让父加载器来进行加载。系统类加载器-》扩展类加载器-》引导类加载器。直到父加载器没有搜索到,才会让子加载器去加载(这时一般需要重写findClass方法)。

4、自定义加载器

重写findClass方法

过程:读取.class字节流,defineClass定义类。

5、破坏双亲模型

JDBC父加载器加载不了指定类,需要由子加载器去加载;

Tomcat:(注明:这里引用了)

(1)、对于各个 webapp中的 class和 lib,需要相互隔离,不能出现一个应用中加载的类库会影响另一个应用的情况,而对于许多应用,需要有共享的lib以便不浪费资源。

(1)、与 jvm一样的安全性问题。使用单独的 classloader去装载 tomcat自身的类库,以免其他恶意或无意的破坏;

(3)、热部署。相信大家一定为 tomcat修改文件不用重启就自动重新装载类库而惊叹吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值