JVM学习笔记6

bilibili-深入理解JVM 虚拟机 学习笔记

JVM学习笔记 1
JVM学习笔记 2
JVM学习笔记 3
JVM学习笔记 4
JVM学习笔记 5

P16_类加载器重要方法详解(16)

public abstract class ClassLoader {
    // ...
    protected Class<?> findClass(String name) throws ClassNotFoundException {
        throw new ClassNotFoundException(name);
    }
    // ...
}

ClassLoader 是一个抽象类,用户自定义类加载器必须继承 ClassLoader 类,其中最重要的就是重写 findClass() 方法
我们在实现 findClass 时,可以使用 ClassLoader 中 defineClass 方法获取 Class 对象;

认真看看 ClassLoader 的 defineClass 的 JavaDoc 文档

P17_类加载器双亲委托机制实例深度剖析(17)

认真看看 ClassLoader 的 loadClass 的 JavaDoc 文档

package new_package.jvm.p16;

public class MyClassLoaderTest {

    public static void main(String[] args) throws Exception {
        ClassLoader classLoader = new MyClassLoader();
        Class clazz = classLoader.loadClass("MD5Util");
        System.out.println(clazz.hashCode());

        ClassLoader classLoader2 = new MyClassLoader();
        Class clazz2 = classLoader2.loadClass("MD5Util");
        System.out.println(clazz2.hashCode());
    }
}

在这种情况,同一个类会加载两次;

命名空间:

  • 每个类加载器都有自己的命名空间,命名空间由该类加载器和所有父加载器所加载的类组成;
  • 在同一个命名空间中不会存在类的完整名称完全相同的两个类
  • 在不同的命名空间中有可能会出现完整名称完全相同的两个类

P18_类的命名空间与卸载详解及jvisualvm使用(18)

类的卸载:

  • 当一个类被加载、连接和初始化后,它的生命周期就开始了;
  • 当类的 Class 对象不再被引用,即不可到达时, Class 对象就会结束生命周期,类在方法区中的数据也会被卸载,从而类的生命周期;
  • 一个类何时结束其生命周期,取决于代表它的 Class 对象何时结束生命周期;
  • 在这里插入图片描述
  • 由用户自定义的类加载器所加载的类是可以被卸载的;
  • 在这里插入图片描述

jvisualvm

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值