druid 源码阅读 3——DataSource 的结构(变量)
今天时间比较晚了,从宏观角度分析一下 DataSource 的结构,能看到哪里看到哪里。
宏观结构:这个类将近 4000 行,一天时间肯定看不完。先大体分个类吧。
先看变量:
从变量里看到一个非常有意思的地方,对象的原子操作,不使用 atomicLong 这样的 jdk 封装好的对象,而是使用一个原始对象加 Updater 的组合。netty 的源码里也有类似的写法,目的是为了节约内存,一个对象占用的内存比一个原始对象占用的内存要多。
对照:如果是我写的话,我会用:
复制代码
结果 druid 的源码是这么用的:
复制代码
今天加班太晚了,先看到这里,明天我们借着今天这个机会,看一下这种方式大概能节省多少内存。
评论