JVM源码分析--ClassLoader类加载器
本人原创,转载请注明出处:https://www.cnblogs.com/javallh/p/10224187.html
1、JDK已有类加载器:
BootStrap ClassLoader (启动类加载器) 运行的是rt.jar 源码由C++编写,所以在java中读取的时候以null表示
Extension ClassLoader extends ClassLoader 运行的是%JAVA_HOME%/lib/ext/*.jar
App ClassLoader extends ClassLoader 运行的是ClassPath
2、自定义类加载器 extends ClassLoader
默认的加载顺序:自定义类加载器--App ClassLoader--Extension ClassLoader--BootStrap ClassLoader (遵循双亲委派模型,并无继承关系!下面可以看源码)
程序体现:
package com.cloud.rest;import lombok.var; import org.junit.Test;public class ClassLoaderTest {@Testpublic void classLoderTest() {var loader = ClassLoaderTest.class.getClassLoader();while (loader != null) {System.out.println(loader);loader = loader.getParent();}System.out.println(loader);}}
如下效果分析:
sun.misc.Launcher$AppClassLoader@18b4aac2 sun.misc.Launcher$ExtClassLoader@3d04a311 null
加载机制可以体现,为null的输出是因为加载BootStrap ClassLoader的时候由于BootStrap无法读取,所以使用null来表示,也可以这样说:如果某个类的父类加载器输出为null,则表示它的父类加载器为BootStrap ClassLoader,(注意:此时的父类为双亲委派模型的概念,并不是类的继承)
转载于:https://www.cnblogs.com/javallh/p/10224187.html
JVM源码分析--ClassLoader类加载器相关推荐
- 80070583类不存在_结合JVM源码谈Java类加载器
一.前言 之前文章 加多:ClassLoader解惑zhuanlan.zhihu.com 从Java层面讲解了Java类加载器的原理,这里我们结合JVM源码在稍微深入讲解下. 二.Java类加载器的 ...
- java类加载机制为什么双亲委派_[五]类加载机制双亲委派机制 底层代码实现原理 源码分析 java类加载双亲委派机制是如何实现的...
Launcher启动类 本文是双亲委派机制的源码分析部分,类加载机制中的双亲委派模型对于jvm的稳定运行是非常重要的不过源码其实比较简单,接下来简单介绍一下我们先从启动类说起有一个Launcher类 ...
- java直接内存为什么快_直接内存与 JVM 源码分析
直接内存(堆外内存) 直接内存有一种叫法,堆外内存. 直接内存(堆外内存)指的是 Java 应用程序通过直接方式从操作系统中申请的内存.这个差别与之前的堆.栈.方法区,那些内存都是经过了虚拟化.所以严 ...
- jvm源码分析之interrupt()
概述 线程的thread.interrupt()方法是中断线程.中断一个线程意味着在线程完成它的任务之前,停止它当前正在执行的操作. 如果线程堵塞在object.wait.Thread.join和Th ...
- threejs 源码解析_ThreeJS 物理材质shader源码分析(顶点着色器)
ThreeJS 物理材质shader源码分析(顶点着色器) Threejs将shader代码分为ShaderLib和ShaderChunk两部分,ShaderLib通过组合ShaderChunk的代码 ...
- 由源码深入Java类加载器(双亲委派模型)
JVM类加载器 JVM主要有以下几种类加载器: 引导类加载器 主要加载JVM运行核心类库,位于JRE的lib目录下,如rt.jar中的类. 扩展类加载器 主要加载JVM中扩展类,位于JRE的ext目录 ...
- Tomcat源码分析(十)--部署器 转载
本系列转载自 http://blog.csdn.net/haitao111313/article/category/1179996 我们知道,在Tomcat的世界里,一个Host容器代表一个虚机器资源 ...
- Java的wait()、notify()学习三部曲之一:JVM源码分析
原文链接:https://blog.csdn.net/boling_cavalry/article/details/77793224 综述 Java的wait().notify()学习三部曲由三篇文章 ...
- JVM源码分析之javaagent原理完全解读
转载地址:https://yq.aliyun.com/articles/2946?spm=5176.100239.yqblog1.45 摘要: 前言 本系列文章都是基于Hotspot/JDK源码,从源 ...
最新文章
- C语言实现,设计一个将所有奇数移动到偶数之前的算法
- 【Python之旅】第五篇(一):Python Socket通信原理
- 自己对Delphi中使用正则表达式的研究心得
- 爬虫python需要什么软件-python大神们!都在用什么爬虫工具呢?
- 面试官:为什么 HashMap 的加载因子是0.75?
- 如何使用Apache Drill分析高度动态的数据集
- Jenkins中切换devtoolset
- wordpress忘记登录密码,更改域名的办法。
- SpringBoot--springboot启动类和controller的配置
- mysql 数据库编码怎么看,查看数据库编码_查看mysql编码方式 mysql数据库编码查看方法...
- express的基本用法
- UVA - 11520 Fill the Square
- Unity 崩溃问题解决方法——之一
- .Net Framework 中设置Web Proxy 的方法
- You are what you read 笔记
- ML之shap:基于adult人口普查收入二分类预测数据集(预测年收入是否超过50k)利用shap决策图结合LightGBM模型实现异常值检测案例之详细攻略
- 数据结构之霍夫曼压缩,更易理解文件压缩过程
- IT行业的哪些岗位比较有前途?
- 校准不好TOF相机就废了?
热门文章
- P1319 压缩技术(python3实现)
- python利用thinker制作多页面切换的桌面应用实例教程
- matlab算法大全 pdf_遗传模拟退火算法求解旅行商(TSP)问题
- Qt文档阅读笔记-Multicast Receiver Example与Multicast Sender Example解析
- OpenCV文档阅读笔记-cvtColor官方解析及实例
- Java高级语法笔记-字符集与中文编码
- 2.4一元多项式的表示及相加
- Ubuntu中apt与apt-get命令的区别
- java 缓冲区溢出_基于数组越界的缓冲区溢出
- java 注解入门 简书_Java基础-注解