摘要:
原生的ehcache只需关注CacheManager和Cache即可,而jcache多了一个cachingProvider,其是用来发现cachingProvider实现的,比如ehcache的EhcacheCachingProvider,然后再通过特定实现的CachingProvider得到特定实 阅读全文
摘要:
jdk7 ConcurrentHashMap的put方法 segment的put方法,segment可以看做是一个HashMap,但其并没有实现Map,Segment<K,V> extends ReentrantLock implements Serializable,可以看到segment继承了R 阅读全文
摘要:
jdk7的HashMap实现的思路比较简单,就是一个Entry数组,数组中每个Entry都是一个链表的起点(表头)。 jdk7的hash函数 jdk7中的HashMap存在一个问题,如果key的hash值都映射到同一个桶中,hashMap的查找就会退化成顺序查找,这会极大影响查找性能(对插入性能无影 阅读全文
摘要:
下面这段测试代码,如果取消第一个future.get的注释,也就是说等第一次submit提交的任务执行完成后,再提交同一个任务,再次提交的任务并不会得到执行,因为此时callable的status已经不是NEW了。但如果将第一个future.get注释掉,也就是在第一次submit提交的任务完成前, 阅读全文
摘要:
下面来分析一下与Reference有关的sun.misc.Cleaner和java.lang.ref.Finalizer。 先来看Finalizer,Finalizer扩展了Reference,故其本质也是一个Reference,与SoftReference、WeakReference、Phanto 阅读全文
摘要:
上一篇简单介绍了三种Reference的使用情况,这一篇就进入源码看一下,这里以WeakReference为例。 首先来看Reference的四种状态: active即活跃状态,表明该Reference的referent未被gc,其主要特点就是next==null; pending即待处理状态,这里 阅读全文
摘要:
下面对SoftReference、WeakReference、PhantomReference三个Reference做相同的测试。 可以看到三个Reference表现各不相同, SoftReference在gc前持有referent,在gc后也没有改变,因为SoftReference中的refere 阅读全文
摘要:
gc简述 gc分为minor gc和full gc,区别在于前者指回收新生代(1个Eden和2个Survivor),后者通常会先进行一次minor gc然后再full gc,full gc回收老年代(Tenure),顺带回收永久代(Perm,jdk8中被Metadata取代,Metadata位于na 阅读全文
摘要:
这里有几个概念可能需要强调: jvm:java virtual machine,即java虚拟机,可以看成是一个抽象的物理计算机。jvm运行时数据区又分为heap、stack、native method stack、method area(jdk8之前,Hotspot使用Perm Gen实现方法区, 阅读全文
摘要:
jdk5中加入了enum类型,那么他是怎样一种结构呢,通过反编译enum可以一窥。 反编译上述代码,可知enum在编译后被转换成了一个被public final修饰的、继承了java.lang.Enum的类型,看来enum只不过是一颗语法糖罢了。 OK、ERROR转换成了public static 阅读全文