摘要:
异常表 代码一: 编译代码一,然后利用javap进行反编译查看结果: 因为我们讨论是异常表,所以我只贴处test方法的code attribute的部分内容。 首先看第一行: ,`stack=3 locals=4 args_size=1 InputStream ServerSocket`,共有2个局 阅读全文
摘要:
Java字节码文件查看 我们有一个类Test01,具体内容如下: 编译这个类,得到Test01.class文件 IDE查看 用IDEA编译器查看 我们发现查看到的class文件与类文件基本相同,这是因为IDE自带的 Fernflower decompiler 将字节码文件反编译的结果。我们可以在插件 阅读全文
摘要:
自定义系统类加载器 ClassLoader.getSystemClassLoader()方法详解 方法说明 返回用于委托的系统类加载器,它是新建ClassLoader实例的默认的委托双亲,通常也是启动应用的类加载器。 这个方法在运行启动期间很早的时候就被调用,在调用时首先会创建系统加载器,而且会将其 阅读全文
摘要:
本博客将沿用 "上篇博客" 中展示的自定义类加载器代码 复杂类加载情况分析 测试代码一 首先,新建一个类Test14,重写默认的构造方法,打印加载该类的类加载器 然后,在新建一个类Test15,同样重写默认的构造方法,打印加载该类的类加载器,在构造方法中new出Test14的实例 测试代码 猜测一下 阅读全文
摘要:
获得ClassLoader的途径 获得当前类的ClassLoader 获得当前线程上下文的ClassLoader 获得系统的ClassLoader 获得调用者的ClassLoader ClassLoader源码解析 概述 类加载器是用于加载类的对象,ClassLoader是一个抽象类。如果我们给定了 阅读全文
摘要:
类的加载、连接与初始化 概述 在Java代码中,类型的加载、连接与初始化过程都是在程序运行期间完成的 类型:可以理解为一个class 加载:查找并加载类的二进制数据,最常见的情况是将已经编译完成的类的class文件从磁盘加载到内存中 连接:确定类型与类型之间的关系,对于字节码的相关处理 验证:确保被 阅读全文
摘要:
Java11中新增了两个GC,Epsilon GC和ZGC。 Epsilon垃圾收集器 A NoOp Garbage Collector 没有操作的垃圾收集器 JDK上对这个特性的描述是:开发一个处理内存分配但不实现任何实际内存回收机制的GC, 一旦可用堆内存用完,JVM就会退出。 如果有Syste 阅读全文
摘要:
Java9开始引入的一个处理 HTTP 请求的的 HTTP Client API,该 API 支持同步和异步,而在 Java 11 中已经为正式可用状态,你可以在 java.net 包中找到这个 API。 为了方便测试,我这边启动了一个服务器,访问: 即可返回一段json字符串。 下面来看一下HTT 阅读全文
摘要:
我们都知道,Spring Boot Actuator 提供监控数据是Json数据,在某种程度来说并不利于分析查看,那么如何将其进行可视化呢?我们有很多种选择,但是目前在这个领域,最流行的是 Spring Boot Admin 。 Spring Boot Admin是为Spring Boot量身打造的 阅读全文
摘要:
新的本机不可修改集合API 自从Java9开始,JDK里面为集合(List/Set/Map)都添加了of和copyOf方法,他们可以来创建不可变的集合。 Question1:什么叫做不可变集合? 不能对集合进行添加、删除、替换、排序等操作,否则会报 java.lang.UnsupportedOper 阅读全文