java源代码
前进的小猫
电子科技大学2013级本科生,喜欢IT,喜欢Java
展开
-
java 集合类之ArrayList
本文将从源代码的角度对Java 最常用的集合类ArrayList进行介绍,代码版本为1.8_121。 继承结构 除了一些功能性的接口,ArrayList的继承大致可以看成是从Collection=>AbstractCollection=>AbstractList=>ArrayList 的一个继承流程,接下来依此看看这些类都做了什么工作。 Collection类 collect...原创 2018-11-19 12:26:02 · 238 阅读 · 0 评论 -
java 集合类之HashMap
本文从源代码角度简单介绍HashMap。 继承架构 可以看出,HashMap主要是继承了AbstractMap,实现了Map接口。类似的继承了AbstractMap的还有ConcurrentHashMap,TreeMap等等 抽象数据模型 HashMap的抽象数据模型来自于算法中查找技术的散列算法针对碰撞提出的拉链表。具体示意图如下:拉链表 散列表是为了快速查找而设计的一类数据结构,为了能快速...原创 2018-12-04 21:32:04 · 155 阅读 · 0 评论 -
java集合类之ConcurrentHashMap
本文从线程安全的角度结合源代码介绍了ConcurrentHashMap,不介绍与HashMap雷同的部分,如果对HashMap的实现有兴趣,可以参考java 集合类之HashMap。 本文介绍的ConcurrentHashMap基于Java1.8源代码,ConcurrentHashMap的实现在1.8有重大调整,使用CAS的方式取代了之前的分段锁。接下来分析一下put方法,以及其实现线程安全的原理...原创 2018-12-06 17:57:19 · 175 阅读 · 0 评论 -
GC Handbook 笔记
TLAB (Thread Local Allocation Buffer), 线程本地分配缓冲区,大部分对象直接在TLAB中分配,避免与其他线程的同步操作。 对象的内存分配策略: 首先在TLAB分配。 TLAB空间不足就在Eden分配 Eden 不足就触发一次young gc。 young gc之后还是 不行就分配到老年代。 java8 使用Metaspace 保存类定义 ...原创 2019-05-21 14:36:22 · 263 阅读 · 0 评论