随笔分类 - JVM类加载
摘要:#前言 最近学习类加载的过程中,了解到JDK提供给我们的一个可扩展的接口:java.util.ServiceLoader, 之前自己不了解这个机制,甚是惭愧... #什么是SPI SPI全称为(Service Provider Interface),是JDK内置的一种服务提供发现机制。SPI是一种动
阅读全文
摘要:前言 目前学习到的类加载的知识,都是基于【双亲委托机制】的。那么JDK难道就没有提供一种打破双亲委托机制的类加载机制吗? 答案是否定的。 JDK为我们提供了一种打破双亲委托模型的机制:线程上下文类加载器。 1.引出【线程上下文类加载器】 我们来复习一下JDBC执行SQL的代码【画外音:感觉回到了大学
阅读全文
摘要:前言 学习类加载必然离开不了sun.misc.Launcher这个类和Class.forName()这个方法。 分析ClassLoader.getSystemClassLoader()这个流程可以明白下面几个知识点: sun.misc.Launcher的初始化 初次接触线程上下文类加载器(Threa
阅读全文
摘要:#前言 前面介绍类加载器的时候,介绍了一下命名空间这个概念。今天就通过一个例子,来详细了解一下【类加载器的命名空间】。然后通过这个例子,我们可以总结一下双亲委托模型的好处与优点。 #例1(不删除classpath下的class文件) ####首先定义一个MyPerson package com.ja
阅读全文
摘要:#前言 学习类加载器就一定要自己实现一个类加载器,今天就从一个简单的自定义类加载器说起。 #自定义类加载器 ###例1 一个简单的类加载器,从一个给定的二进制名字读取一个字节码文件的内容,然后生成对应的class对象。 package com.jamie.jvmstudy; import java.
阅读全文
摘要:#前言 学习JVM类加载器,ClassLoader这个类加载器的核心类是必须要重视的。 Notes:下方蓝色文字是自己的翻译(如果有问题请指正)。黑色文字是源文档。红色文字是自己的备注。 #ClassLoader类源码文档 public abstract class ClassLoader exte
阅读全文
摘要:#前言 Java虚拟机设计团队有意把类加载阶段中的“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。 所以在整个类加载阶段,类加载器的作用就只是在第一步“加载”阶段。 今天就简单记录下类加载器的基本知识。(本文的讨论都
阅读全文
摘要:#前言 JAVA代码经过编译从源码变为字节码,字节码可以被JVM解读,使得JVM屏蔽了语言级别的限制。才有了现在的kotlin、Scala、Clojure、Groovy等语言。 字节码文件中描述了类的各种信息,都需要加载到虚拟机之后才能运行和使用。 简单学习了类加载进制后,写一篇文章记录一下以便加深
阅读全文

浙公网安备 33010602011771号