java 类加载
茅坤宝骏氹
语言:Java、C/C++、C#、Python、Linux Shell。
框架:Spring、Spring MVC、Spring Boot、Spring Cloud、Hibernate、Mybatis、Freemarker、Velocity。
前端:HTML5、CSS3、JavaScript、Bootstrap、JQuery、Vue、React。
数据库:oracle、mysql、MongoDB、HBase。
缓存:Memcache、Redis。
消息队列:kafka。
大数据:Hadoop、Hive、Sqoop、Flume、Spark、Strom、OpenTSDB、Druid。
展开
-
Java高级篇——深入浅出Java类加载机制
转载自 Java高级篇——深入浅出Java类加载机制类加载器简单讲,类加载器ClassLoader的功能就是负责将class文件加载到jvm内存。类加载器分类从虚拟机层面讲分为两大类型的类加载器,一是Bootstrap Classloader即启动类加载器(C++实现),它是虚拟机的一部分,二是其他类型类加载器(JAVA实现),在虚拟机外部,并全部继承ClassLoader类。从细分的角度讲会分为...转载 2018-05-03 09:41:05 · 137 阅读 · 0 评论 -
自定义ClassLoader和双亲委派机制
转载自 自定义ClassLoader和双亲委派机制 ClassLoaderClassLoad:类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class 类的一个实...转载 2018-07-28 09:38:28 · 678 阅读 · 0 评论 -
深入浅出ClassLoader
转载自 深入浅出ClassLoader 你真的了解ClassLoader吗?这篇文章翻译自zeroturnaround.com的 Do You Really Get Classloaders? ,融入和补充了笔者的一些实践、经验和样例。本文的例子比原文更加具有实际意义,文字内容也更充沛一些,非常感谢作者 Jevgeni Kabanov 能够共享如此优秀的文档。 1. 为什么你需...转载 2018-07-28 09:39:25 · 202 阅读 · 0 评论 -
Thread.currentThread().getContextClassLoader() 和 Class.getClassLoader()区别
转载自 Thread.currentThread().getContextClassLoader() 和 Class.getClassLoader()区别 查了一些资料也不是太明白两个的区别,但是前者是最安全的用法 打个简单的比方,你一个WEB程序,发布到Tomcat里面运行。首先是执行Tomcat org.apache.catalina.startup.Bootstrap类,这...转载 2018-07-29 10:33:58 · 660 阅读 · 0 评论 -
Class.forName()和ClassLoader.getSystemClassLoader().loadClass()区别
转载自 Class.forName()和ClassLoader.getSystemClassLoader().loadClass()区别 class A{ static { System.out.println("Class A is Loading now"); } public A() { System.out.println("A new Class A ins...转载 2018-07-29 10:34:15 · 2500 阅读 · 0 评论 -
ClassLoader 详解及用途
转载自 ClassLoader 详解及用途 ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象。 1.1 几个相关概念ClassLoader负责载入系统的所有Resources(Class,文件,来自网络的字节流等),通过ClassLoader从而将资源载入JVM ...转载 2018-07-29 10:34:29 · 153 阅读 · 0 评论 -
Java类加载的那些事
转载自 Java类加载的那些事 前言Java源代码被编译成class字节码,最终需要加载到虚拟机中才能运行。整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载7个阶段。 加载1、通过一个类的全限定名获取描述此类的二进制字节流; 2、将这个字节流所代表的静态存储结构保存为方法区的运行时数据结构; 3、在java堆中生成一个代表这个类的java.lang.Clas...转载 2018-07-26 19:15:54 · 176 阅读 · 0 评论 -
Java中classLoader浅析
转载自 Java中classLoader浅析本文为在公司内部TD上写的一篇小文, 主要讲解java中classLoader基础知识, 现在拿来这里分享一下. 一、问题请在Eclipse中新建如下类,并运行它:package java.lang;public class Long { public static void main(String[] args) { Sy...转载 2018-06-26 09:56:51 · 169 阅读 · 0 评论 -
破坏双亲委派机制的那些事
转载自 破坏双亲委派机制的那些事前言今天重读《深入理解Java虚拟》这本书,读到破坏双亲委派机制这一小节,其中有一段话,如下双亲委派模型的第二次“被破坏”是由这个模型自身的缺陷所导致的,双亲委派很好地解决了各个类加载器的基础类的统一问题(越基础的类由越上层的加载器进行加载),基础类之所以称为“基础”,是因为它们总是作为被用户代码调用的API,但世事往往没有绝对的完美,如果基础类...转载 2018-08-02 19:35:24 · 2130 阅读 · 0 评论 -
真正理解线程上下文类加载器(多案例分析)
转载自 真正理解线程上下文类加载器(多案例分析)前置知识: java类加载器不完整分析前言此前我对线程上下文类加载器(ThreadContextClassLoader,下文使用TCCL表示)的理解仅仅局限于下面这段话:Java 提供了很多服务提供者接口(Service Provider Interface,SPI),允许第三方为这些接口提供实现。常见的 SPI 有 JDBC、J...转载 2018-08-02 19:35:13 · 170 阅读 · 0 评论 -
破坏双亲委派模型
转载自 破坏双亲委派模型 1.第一次破坏由于双亲委派模型是在JDK1.2之后才被引入的,而类加载器和抽象类java.lang.ClassLoader则在JDK1.0时代就已经存在,面对已经存在的用户自定义类加载器的实现代码,Java设计者引入双亲委派模型时不得不做出一些妥协。在此之前,用户去继承java.lang.ClassLoader的唯一目的就是为了重写loadClass()方法,...转载 2018-07-28 09:37:18 · 1592 阅读 · 0 评论 -
违反ClassLoader双亲委派机制三部曲第二部——Tomcat类加载机制
转载自 违反ClassLoader双亲委派机制三部曲第二部——Tomcat类加载机制前言:本文是基于 ClassLoader双亲委派机制源码分析 了解过正统JDK类加载机制及其实现原理的基础上,进而分析这种思想如何应用到Tomcat这个web容器中,从源码的角度对 违反ClassLoader双亲委派机制三部曲之首部——JDBC驱动加载 中提出的Tomcat是如何完成多个web应用之间相互隔离...转载 2018-07-28 09:15:51 · 965 阅读 · 0 评论 -
【深入理解JVM】:类加载器与双亲委派模型
转载自 【深入理解JVM】:类加载器与双亲委派模型 类加载器加载类的开放性类加载器(ClassLoader)是Java语言的一项创新,也是Java流行的一个重要原因。在类加载的第一阶段“加载”过程中,需要通过一个类的全限定名来获取定义此类的二进制字节流,完成这个动作的代码块就是类加载器。这一动作是放在Java虚拟机外部去实现的,以便让应用程序自己决定如何获取所需的类。虚拟机规...转载 2018-07-20 09:36:44 · 110 阅读 · 0 评论 -
类、变量、块、构造器、继承初始化顺序,终极解答
转载自 类、变量、块、构造器、继承初始化顺序,终极解答最近发现微信群里面有些群友在讨论类的初始化顺序,如类的静态变量、成员变量、静态代码块、非静态代码块、构造器,及继承父类时,它们的初始化顺序都是怎样的,下面我通过例子来说明这个情况,以免被人误导。示例1:测试单类的初始化顺序public class ClassInitOrderTest { public static String st...转载 2018-04-26 09:33:05 · 246 阅读 · 0 评论 -
jvm系列(一):java类的加载机制
转载自 jvm系列(一):java类的加载机制1、什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的 Class对象, Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。...转载 2018-04-21 23:35:06 · 295 阅读 · 0 评论 -
Java高级进阶:自定义ClassLoader
转载自Java高级进阶:自定义ClassLoader假如我们的类不在classpath下,而我们又想读取一个自定义的目录下的class,如果做呢?读取自定义目录的类示例读取c:/test/com/test.jdk/Key.class这个类。package com.test.jdk;public class Key { private String key = "111111";}自...转载 2018-04-29 20:06:35 · 3142 阅读 · 6 评论 -
深度分析Java的ClassLoader机制(源码级别)
转载自 深度分析Java的ClassLoader机制(源码级别)Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中,JVM在加载类的时候,都是通过ClassLoader的loadClass()方法来加载class的,loadClass使用双亲委派模式。为了更好的理解类的加载机制,我们来深入研究一下Class...转载 2018-05-19 08:46:00 · 593 阅读 · 0 评论 -
Java类加载器总结
转载自 Java类加载器总结 1.类的加载过程 JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示:1) 装载:查找并加载类的二进制数据;2)链接:验证:确保被加载类的正确性;准备:为类的静态变量分配内存,并将其初始化为默认值;解析:把类中的符号引用转换为直接引用;3)初始...转载 2018-07-27 19:08:42 · 195 阅读 · 0 评论 -
深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
转载自 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题 一.概述定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。类加载和连接的过程都是在运行期间完成的。 二. 类的加载方式1):本地编译好的class中直接加载2):网络加载:java.net.URLClassLoade...转载 2018-07-28 09:14:52 · 187 阅读 · 0 评论 -
jvm类加载器以及双亲委派
转载自 jvm类加载器以及双亲委派 首先来了解几个概念:类加载: 概念:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验--转换解析--初始化,最终形成能被java虚拟机直接使用的java类型,就是jvm的类加载机制。 类加载包含了以下过程:加载--验证--准备--解析--初始化--使用--卸载 类加载器: 首先,什么是类加载器?...转载 2018-07-27 19:09:17 · 194 阅读 · 0 评论 -
关于Java类加载双亲委派机制的思考(附面试题)
转载自 关于Java类加载双亲委派机制的思考(附面试题) 预定义类加载器和双亲委派机制JVM预定义的三种类型类加载器:启动(Bootstrap)类加载器:是用本地代码实现的类装入器,它负责将 <Java_Runtime_Home>/lib下面的类库加载到内存中(比如rt.jar)。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许...转载 2018-07-29 10:33:32 · 555 阅读 · 0 评论 -
【深入Java虚拟机】之四:类加载机制
转载自 【深入Java虚拟机】之四:类加载机制 类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示: 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某...转载 2018-07-28 09:15:35 · 185 阅读 · 0 评论 -
【JVM】浅谈双亲委派和破坏双亲委派
转载自 【JVM】浅谈双亲委派和破坏双亲委派一、前言笔者曾经阅读过周志明的《深入理解Java虚拟机》这本书,阅读完后自以为对jvm有了一定的了解,然而当真正碰到问题的时候,才发现自己读的有多粗糙,也体会到只有实践才能加深理解,正应对了那句话——“Talk is cheap, show me the code”。前段时间,笔者同事提出了一个关于类加载器破坏双亲委派的问题,以我们常见到的数...转载 2018-07-29 10:33:18 · 921 阅读 · 0 评论