摘要: 我们可以通过ByteBuffer创建一块直接内存 来看这块内存是如何被分配的 对于内存空间,我们关注的是它的分配和回收,这里使用了unsafe分配,unsafe是一个提供了低等级操作的接口,这里就不研究它了,我们主要来看这块被unsafe分配的直接内存是如何被回收的。 我们知道,ByteBuffer 阅读全文
posted @ 2017-07-31 23:17 holoyong 阅读(1351) 评论(0) 推荐(0) 编辑
摘要: 来聊一下ThreadLocal的实现原理和它的内存泄漏问题 首先来看一个官方示例,这里构造了一个ThreadId类,其作用是在每个线程中保存各自的id,此id全局唯一,通过get可以获取id。 ThreadLocal的构造器是一个空函数,new一个ThreadLocal实例时,唯一的操作就是对thr 阅读全文
posted @ 2017-07-31 22:01 holoyong 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 如何自定义serializer? 只需要实现org.ehcache.spi.serialization.Serializer接口的serialize、read、equals这3个方法即可,来看该接口的说明 1实现必须线程安全,可以使用ThreadLocal; 2实现必须包含一个含有ClassLoad 阅读全文
posted @ 2017-07-31 18:36 holoyong 阅读(1947) 评论(0) 推荐(0) 编辑
摘要: 这里先来分析一下ehcache的serializer的初始化过程。 ehcache在初始化时,会先由DefaultSerializationProvider注册默认Serializer, 注意,如果在ehcache配置文件中注册了复杂类(如Object)的默认Serializer,ehcache的P 阅读全文
posted @ 2017-07-31 16:19 holoyong 阅读(796) 评论(0) 推荐(0) 编辑
摘要: ehcache3和spring都支持jcache,二者必然可以很方便的整合在一起。 下面的afterPropertiesSet是JCacheManagerFactoryBean的逻辑,JCacheManagerFactoryBean通过getObject方法将cacheManager注入JCache 阅读全文
posted @ 2017-07-31 16:05 holoyong 阅读(1529) 评论(0) 推荐(0) 编辑
摘要: 原生的ehcache只需关注CacheManager和Cache即可,而jcache多了一个cachingProvider,其是用来发现cachingProvider实现的,比如ehcache的EhcacheCachingProvider,然后再通过特定实现的CachingProvider得到特定实 阅读全文
posted @ 2017-07-31 15:03 holoyong 阅读(2736) 评论(0) 推荐(0) 编辑