JDK11和JDK8类加载器的区别
如下代码:
public class Test07 {
public static void main(String[] args) throws ClassNotFoundException {
// 获取系统类加载器
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
System.out.println(systemClassLoader);
// 获取系统类加载器的父类加载器 --> 扩展类加载器
ClassLoader parent = systemClassLoader.getParent();
System.out.println(parent);
// 获取扩展类加载器的父类加载器 --> 根加载器(C/C++)
ClassLoader parent1 = parent.getParent();
System.out.println(parent1);
// 测试当前类的加载器
ClassLoader classLoader = Class.forName("com.itteer.reflection.Test07").getClassLoader();
System.out.println(classLoader);
// 测试JDK内置的类加载器
classLoader = Class.forName("java.lang.Object").getClassLoader();
System.out.println(classLoader);
// 如何获得系统类加载器可以加载的路径
System.out.println(System.getProperty("java.class.path"));
}
}
使用JDK11编译,输出结果如下:
jdk.internal.loader.ClassLoaders$AppClassLoader@1f89ab83
jdk.internal.loader.ClassLoaders$PlatformClassLoader@7c30a502
null
jdk.internal.loader.ClassLoaders$AppClassLoader@1f89ab83
null
D:\IDEAWorkspace\demo\anno
使用JDK8编译,输出结果如下:
sun.misc.Launcher$AppClassLoader@18b4aac2
sun.misc.Launcher$ExtClassLoader@1b6d3586
null
sun.misc.Launcher$AppClassLoader@18b4aac2
null
D:\Java\jdk1.8.0\jre\lib\charsets.jar;
D:\Java\jdk1.8.0\jre\lib\deploy.jar;
D:\Java\jdk1.8.0\jre\lib\ext\access-bridge-64.jar;
D:\Java\jdk1.8.0\jre\lib\ext\cldrdata.jar;
D:\Java\jdk1.8.0\jre\lib\ext\dnsns.jar;
D:\Java\jdk1.8.0\jre\lib\ext\jaccess.jar;
D:\Java\jdk1.8.0\jre\lib\ext\jfxrt.jar;
D:\Java\jdk1.8.0\jre\lib\ext\localedata.jar;
D:\Java\jdk1.8.0\jre\lib\ext\nashorn.jar;
D:\Java\jdk1.8.0\jre\lib\ext\sunec.jar;
D:\Java\jdk1.8.0\jre\lib\ext\sunjce_provider.jar;
D:\Java\jdk1.8.0\jre\lib\ext\sunmscapi.jar;
D:\Java\jdk1.8.0\jre\lib\ext\sunpkcs11.jar;
D:\Java\jdk1.8.0\jre\lib\ext\zipfs.jar;
D:\Java\jdk1.8.0\jre\lib\javaws.jar;
D:\Java\jdk1.8.0\jre\lib\jce.jar;
D:\Java\jdk1.8.0\jre\lib\jfr.jar;
D:\Java\jdk1.8.0\jre\lib\jfxswt.jar;
D:\Java\jdk1.8.0\jre\lib\jsse.jar;
D:\Java\jdk1.8.0\jre\lib\management-agent.jar;
D:\Java\jdk1.8.0\jre\lib\plugin.jar;
D:\Java\jdk1.8.0\jre\lib\resources.jar;
D:\Java\jdk1.8.0\jre\lib\rt.jar;
D:\IDEAWorkspace\demo\anno;
C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.1\lib\idea_rt.jar
JDK11和JDK8类加载器的区别的更多相关文章
- JVM源码分析之JDK8下的僵尸(无法回收)类加载器[z]
[z]http://lovestblog.cn/blog/2016/04/24/classloader-unload/ 概述 这篇文章基于最近在排查的一个问题,花了我们团队不少时间来排查这个问题,现象 ...
- java JDK8 学习笔记——第17章 反射与类加载器
第十七章 反射与类加载器 17.1 运用反射 反射:.class文档反映了类基本信息,从Class等API取得类信息的方式称为反射. 17.1.1 Class与.class文档 1.java.lang ...
- 类加载器:ClassLoader与Class的区别
1.类加载器 java字节码(类)的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验.解析和初始化,最终形成能被java虚拟机直接使用的java类型,这就是虚拟机的类 ...
- 深入JVM类加载器机制,值得你收藏
先来一道题,试试水平 public static void main(String[] args) { ClassLoader c1 = ClassloaderStudy.class.getClass ...
- [转载] Java高新技术第一篇:类加载器详解
本文转载自: http://blog.csdn.net/jiangwei0910410003/article/details/17733153 首先来了解一下字节码和class文件的区别: 我们知道, ...
- Android中插件开发篇之----类加载器
关于插件,已经在各大平台上出现过很多,eclipse插件.chrome插件.3dmax插件,所有这些插件大概都为了在一个主程序中实现比较通用的功能,把业务相关或者让可以让用户自定义扩展的功能不附加在主 ...
- (转)《深入理解java虚拟机》学习笔记8——Tomcat类加载器体系结构
Tomcat 等主流Web服务器为了实现下面的基本功能,都实现了不止一个自定义的类加载器: (1).部署在同一个服务器上的两个web应用程序所使用的java类库可以相互隔离. (2).部署在同一个服务 ...
- 扩展类加载器-------改变JAVA的父优先类加载顺序
java的类加载机制默认情况下是采用委托模型:当加载某个类时JVM会首先尝试用当前类加载器的父类加载器加载该类,若父类加载器加载不到再由当前类加载器来加载,因此这种模型又叫做“父优先”模型. 但是在实 ...
- 黑马程序员_高新技术之javaBean,注解,类加载器
----------- android培训.java培训.java学习型技术博客.期待与您交流! ---------- 第一部分 javaBean 一,由内省引出javaBean 1,内省: 内省对应 ...
随机推荐
- CSRF 详解:攻击,防御,Spring Security应用等
本文原创,更多内容可以参考: Java 全栈知识体系.如需转载请说明原处. CSRF(Cross-site request forgery跨站请求伪造,也被称成为"one click att ...
- 【一起学源码-微服务】Feign 源码三:Feign结合Ribbon实现负载均衡的原理分析
前言 前情回顾 上一讲我们已经知道了Feign的工作原理其实是在项目启动的时候,通过JDK动态代理为每个FeignClinent生成一个动态代理. 动态代理的数据结构是:ReflectiveFeign ...
- beetlex网关之聚合和url请求过虑
在这里主要介绍beetlex应用网关的两个插件,分别是聚合和url请求过虑.通过聚合插件可以把整合多个请求的数据来应答请求端,而Url请求过虑同可以拒绝一些有非常关键字的请求. 请求聚合 在网关服务中 ...
- 【Think In Java笔记】第1章 对象导论
1. 对象导论 OOP 面向对象编程 C.Basic等语言所在的抽象仍要求在解决问题时基于计算机的解决,而不是基于所解决问题的结构来考虑. 要建立起问题空间的元素和解空间的对象之间一一映射的关系 万物 ...
- 全流程开发 TP6.0实战高并发电商服务系统*完
在TP6框架中我们可以学到TP整体知识,如下图一所示: 图一:TP6整体知识点 这些内容都会在实战课程中一一涵盖,并且在课程中我们会用到五层架构思想(如图二),和传统的MVC架构有所不一样,这样做可以 ...
- HTTP1.1
读了一本图解http,总结一下子. 1 .重要的头部 1.TCP/IP 通信传输流 五层模型 先盗个图,重点说明每过一层都会加个头,头很重要啊!其中https 就是在传输层搞事,把本来明文的数据包 ...
- Redis-缓存穿透、缓存雪崩、缓存击穿、缓存一致性、并发竞争
缓存流程 在讲这五个问题之前,首先我们回顾下正常的缓存的使用流程 程序在处理请求时,会先从缓存中进行查询,如果缓存中没有对应的key,则会从数据库中查询,如果查询到结果,并将查询结果添加到缓存中去,反 ...
- dp-多重背包
(推荐 : http://blog.csdn.net/insistgogo/article/details/11176693 ) 学会了前两个背包 , 学这个背包还是很轻松的 . 多重背包 , 顾名思 ...
- Python第一个请求接口
1.普通get请求 import requests import json login_res=requests.post(url='http://joy.web.com:8090/login',da ...
- Java入门 - 语言基础 - 21.Scanner类
原文地址:http://www.work100.net/training/java-scanner.html 更多教程:光束云 - 免费课程 Scanner类 序号 文内章节 视频 1 概述 2 使用 ...