首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

DirectMemory兑现方式

2012-06-26 
DirectMemory实现方式??? 我们都知道Terracotta收购了EhCache,同时推出了基于off-heap技术的bigMemory,从

DirectMemory实现方式

??? 我们都知道Terracotta收购了EhCache,同时推出了基于off-heap技术的bigMemory,从而摆脱JVM GC带来的性能问题;

???? 就Java 本地Cache(非分布式)而言,存在3个地方可以存放数据:Heap, OffHeap和Disk

????
DirectMemory兑现方式
?

????? BigMemory非开源产品,所以其源码不能通过正常渠道拿到。

????? 同时,有一个开源产品DirectMemory实现了类似BigMemory的Cache实现,

??????https://github.com/raffaeleguidi/DirectMemory

?

????? 它的类图:

?????
DirectMemory兑现方式
? 使用:

??

Cache.init(10, 100);Cache.put("test1", "t".getBytes());Cache.put("test2", "t".getBytes());Cache.put("test3", "t".getBytes());byte[] p = Cache.retrieve("test1");

?

?

? 存在的问题:

    Cache类是单例,在同一个JVM里,不能根据实际应用创建不同的Cache(可以实现自己的Cache);OffHeapMemoryBuffer中ByteBuffer 空间存在浪费;要根据业务类型,合理分配OffHeapMemoryBuffer的容量;目前Map<key>还是存放在Heap里,只是Value存放在Off-Heap,不过可以根据需要修改代码;

?

?

? Direct-Memory依赖的其他类库

    JoSQL SQL for Java Objects http://josql.sourceforge.net/guava google-common-collection http://code.google.com/p/guava-libraries/其中的MapMaker的使用

??

??参考:

    JDK1.4引入的DirectByteBuffer BigMemory

热点排行