可怕的线程上下文类装载器(TCCL)】的更多相关文章

在明天的 OSGi 2012 社区活动上,我将以"如何使你的类库在不依赖 OSGi 的情况下进行友好地 OSGi"为主题进行演讲.在演讲中我将会提及 Java 的线程上下文类加载器(TCCL),但是整个演讲只有 25 分钟,我没有更多时间对此进行深入讨论.所以我写这篇博客希望能够帮助大家了解到一些相关背景信息.本文中的很多技术信息和研究取自于 Peter Kriens 先生写的一篇没有公开的 OSGi 需求建议书.对此我已经获得了他的许可. 历史 线程上下文类装载器(TCCL)在 Ja…
简介: 类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的. Java Applet 需要从远程下载 Java 类文件到浏览器中并执行. 现在类加载器在 Web 容器和 OSGi 中得到了广泛的使用. 1,java.lang.ClassLoader类介绍 1,java.lang.ClassLoader类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即 java.lang.Class类…
摘要: 博文<深入理解Java类加载器(一):Java类加载原理解析>提到的类加载器的双亲委派模型并不是一个强制性的约束模型,而是Java设计者推荐给开发者的类加载器的实现方式.在Java世界中的大部分类加载器都遵从这个模型,但这个模型并不能解决 Java 应用开发中会遇到的类加载器的全部问题,这便是本文要阐述的内容. 版权声明: 本文作者:书呆子Rico  作者博客地址:http://blog.csdn.net/justloveyou_/ 一.线程上下文类加载器 线程上下文类加载器(cont…
当前类加载器(Current ClassLoader) 每个类都会使用自己的类加载器(即加载自身的类加载器)来去加载其他类(指所依赖的类) 如果ClassX引用了ClassY,那么ClassX的类加载器就会去加载ClassY(前提是ClassY尚未被加载) 线程上下文加载器(Context Classloader) 线程上下文加载器是从JDK1.2开始引入,类Thread中的getContextLoader() 与setContextClassLoader(ClassLoader cl) 分别用…
关于线程上下文类加载器已经在之前学得比较透了,作为一个收尾,这里用平常J2EE开发时JDBC连接Mysql数据库常见的一段代码通过分析它的底层进一步加深对线程上下文类加载器的理解,所以先来将连接应用代码写上,注意:这里不力求真正的去完成数据的连接,重在在分代码,如下: 说实话如今的工作重点是搞android的开发,再来看上面的这段代码还是非常之亲切的,当然啦搞J2EE开发的那就不用多说了,家常便饭了,好,接下来先来分析第一行代码: 对于mysql驱动有两个: 而我们使用的是第一个,对于forNa…
有许多地方能够看到线程上下文类加载的设置,比如在sun.misc.Launcher类的构造方法中,能够看到如下代码 先写一个例子建立感性认识 public class Test { public static void main(String[] args) { System.out.println(Thread.currentThread().getContextClassLoader()); System.out.println(Thread.class.getClassLoader());…
cpu切换线程上下文会耗费多少时间,有人在linux下面使用不同的cpu测试过,需要1000ns以上的时间 https://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html…
前提 今天(2020-01-18)在编写Netty相关代码的时候,从Netty源码中的ThreadDeathWatcher和GlobalEventExecutor追溯到两个和线程上下文类加载器ContextClassLoader内存泄漏相关的Issue: ThreadDeathWatcher causes custom classLoader script memory leaks Ensure ThreadDeathWatcher and GlobalEventExecutor will no…
目录 1. 什么是全盘负责委托机制 2. 为什么需要有线程上下文类加载器 2.1 使用JDBC的例子,分析为什么双亲委托机制不能实现要求 2.2 线程上下文类加载器的作用 3. 线程上下文类加载器的使用 3.1 线程上下文类加载器使用API 3.2 线程上下文类加载器的特征 3.3 线程上下文类加载器使用的通用写法 4. 借助JDBC源码分析上下文类加载器的使用 4.1 示例代码 4.2 源码分析 4.2.1 首先解析第一句 Class.forName("com.mysql.jdbc.Drive…
1.线程上下文类加载器是从jdk1.2开始引入的,类Thread中的getContextClassLoader()与setContextClassLoader(ClassLoader c1),分别用来获取和设置类加载器如果没有通过setContextClassLoader方法进行设置的话,线程将继承其父线程的上下文加载器,java应用运行时的初始线程的上下文类加载器是系统类加载器(这里是由Launcher类设置的).在线程中运行的代码可以通过该类加载器来加载类和资源2.线程上下文类加载器的重要性…