摘要: 这回来分析一下OSGI的类加载机制。 先说一下OSGI能解决什么问题吧。 记得在上家公司的时候,经常参与上线。上线一般都是增加了一些功能或者修改了一些功能,然后将所有的代码重新部署。过程中要将之前的服务关掉,而且不能让客户访问。虽然每回的夜宵都不错,但还是感觉这个过程很麻烦,很别扭。 为什么明明只修 阅读全文
posted @ 2017-05-29 18:31 大诚挚 阅读(2568) 评论(0) 推荐(0) 编辑
摘要: 类加载,再来一发。 研究完java提供的类加载机制,再来看看tomcat开出了那些花。 最近开始读tomcat的源码,主线路当然是类加载机制,在这个过程中有豁然开朗的感觉。这一篇主要是自己的体会,而不是从头到尾的详细解读。很显然,是因为我懒。有多懒呢,懒到把女朋友都弄丢了,哎。 言归正传,从tomc 阅读全文
posted @ 2017-05-21 17:16 大诚挚 阅读(853) 评论(0) 推荐(0) 编辑
摘要: 这段时间跟类加载机制是干上了。 这一篇来分析一下jdbc工作过程中涉及到的类加载流程,重点是想看看在双亲委派模型不适用的时候,如何解决。 第一步,加载数据库的驱动 Class.forName 方法会根据类的全路径名称去加载对应的class文件,生成类型,并初始化类型。也就是说static语句块会执行 阅读全文
posted @ 2017-05-17 14:18 大诚挚 阅读(6862) 评论(0) 推荐(4) 编辑
摘要: 本次尝试在不突破双亲委派模型的基础上,自定义类加载器,以理解java类加载的流程。 既然不突破双亲委派,那就只重写findClass方法: 在不指定父类加载器的情况下,类ClassLoader默认的构造方法里将父类加载器设置为了系统类加载器(AppClassLoader) 所以我在findClass 阅读全文
posted @ 2017-05-16 14:21 大诚挚 阅读(451) 评论(0) 推荐(0) 编辑
摘要: 动态代理 所谓动态,就是在运行期间生成代理类。不然,有100个需要被代理的类,你就得手动写100个代理类,代码膨胀得厉害。 而我现在的目标是弄清楚jdk如何实现动态代理。 阅读Proxy类的源码能够看清大体流程: 1、我们自己提供接口和类加载器,然后jdk去通过Class.forName的方式去加载 阅读全文
posted @ 2016-12-13 09:21 大诚挚 阅读(840) 评论(0) 推荐(0) 编辑
摘要: 上一篇理解了JVM类加载过程的第一个阶段,这篇来说说剩下的阶段:验证、准备、解析、初始化。需要注意的是,这些阶段(解析除外)只是按照这个顺序开始,但是执行的过程中可能存在交叉。 验证:就是要对加载的二进制流文件进行各种检查,很好理解。 准备:为类变量(static)分配内存并设置初始值,即所谓的"零 阅读全文
posted @ 2016-12-11 16:53 大诚挚 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 先说class文件 编写的java代码首先被编译成class二进制文件,这是实现平台无关性的关键一步。至于class文件里面的具体内容,可以用编辑器打开,结合一些教程一项一项的分析。 其实,我主要想说的是,一个class文件代表一个类型(类或者接口),也可以理解为元数据。在我们的程序中访问一个类型的 阅读全文
posted @ 2016-12-06 09:15 大诚挚 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 一个对象从无到有的过程 A a = new A() 1、JVM遇到new指令就会去堆内存分配一块内存空间,内存的大小在编译期间就可以确定 2、接着调用A的构造函数,这里构造的时候会沿着继承树逆流而上,一直到Object。 先看一段代码: 输出: 这段代码中,我主要想说一下第10行和第13行。 先说说 阅读全文
posted @ 2016-11-21 15:51 大诚挚 阅读(1225) 评论(0) 推荐(0) 编辑
摘要: 当我们站在JVM实现的角度去看方法调用的时候,我们自然会想到一种分类: 1、编译代码的时候就知道是哪个方法,永远不会产生歧义,例如静态方法,private方法,构造方法,super方法。 2、运行时才能确定是哪个方法,这也正是多态的实现原理。 对于第一种方法的调用,有2个字节码指令:invokest 阅读全文
posted @ 2016-11-20 16:15 大诚挚 阅读(543) 评论(0) 推荐(0) 编辑
摘要: 1、JVM运行时常量池在内存的方法区中(在jdk8中,移除了方法区) 2、JVM运行时常量池中的内容主要是从各个类型的class文件的常量池中获取,对于字符串常量,可以调用intern方法人为添加,而数值类型的常量池不可以人为添加。 阅读全文
posted @ 2016-11-16 20:05 大诚挚 阅读(654) 评论(0) 推荐(0) 编辑