`
sqe_james
  • 浏览: 264833 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

EHCache BigMemory(译)

阅读更多

介绍

BigMemory是Terracotta的一个纯Java产品,允许在对象堆外使用一个额外的内存存储类型。被打包使用在企业级Ehcache作为一个嵌入式管理单元作业储存,称作 “离线堆存储”。如果企业级Ehcache是分布在一个Terracotta集群中,你可以在Ehcache(Terracotta客户端或L1)和Terracotta服务阵列(L2)两者中配置BigMemory。

 

这个离线存储堆,不受制于Java GC,比DiskStore快100倍,且允许创建非常大的缓存(我们已经测试的超过350GB)。

 

由于离线堆是以字节为单位的数据存储,有两层含义:

  • 仅系列化的缓存键值能被存储,类似DiskStore;
  • 系列化和反系列化发生在从存储中放置和存取时。这也意味着离线存储在绝对意义上是慢的(相比MemoryStore大约慢10倍),但这一理论上的差异消失,由于受两方面的影响:
  1. MemoryStore保存着已经以反系列化形式存在的来自离线堆的最热门子集
  2. 当GC考虑到涉及更大的堆时,离线堆通常是更快的。

有关Ehcache BigMemory的教程,参阅 BigMemory for Enterprise Ehcache Tutorial.

 

配置

 配置缓存溢出到离线堆

使用一个离线堆存储配置缓存既可通过XML配置,也可编程实现。

如果使用一个带有很强一致性的分布式缓存,可能需要在客户和服务堆中存储大量的锁。在这用情况下,请务必用预期数据集来检测很可能发生的内存溢出错误情形的集群测试。此外,来自锁管理的消耗有可能导致性能降低。

 

 声明式配置

以下的XML配置创建了一个带有溢出到1GB离线堆区的1000个元素的 in-heap 存储(maxEntriesLocalHeap)离线堆缓存。

 

<ehcache updateCheck="false" monitoring="off" dynamicConfig="false">
    <defaultCache maxEntriesLocalHeap="10000"
                  eternal="true"
                  memoryStoreEvictionPolicy="LRU"
                  statistics="false" />

    <cache name="sample-offheap-cache"
           maxEntriesLocalHeap="10000"
           eternal="true"
           memoryStoreEvictionPolicy="LRU"
           overflowToOffHeap="true"
           maxBytesLocalOffHeap="1G"/>
</ehcache>
 

配置可选项:

overflowToOffHeap

值可为 true 或 false。当设为true时,将启用利用离线堆内存存储的缓存改善性能。Off-heap内存不受制于Java GC周期,通过设置MaxDirectMemorySize Java属性可限制其存储内存的大小。默认值为:false

 

maxBytesLocalOffHeap

设置可用于缓存的off-heap内存数值,仅overflowtoOffHeap为true时有效。最小分配置为 1MB,没有最大值。

 

关于缓存大小的更多信息,请参考 How To Size Caches.

 

 注意:当使用Off-heap存储时的堆配置

但是用off-heap存储时,你至少应当设置maxEntriesLocalHeap值为100个元素,以避免性能退化。对maxEntriesLocalHeap设置太低的值将触发警告日志。

 

编程配置

以下的编程配置能创建相同的缓存:

public Cache createOffHeapCache(){  
  CacheConfiguration config = new CacheConfiguration("sample-offheap-cache", 10000).overflowToOffHeap(true).maxBytesLocalOffHeap("1G");
  Cache cache = new Cache(config);
  manager.addCache(cache);
  return cache;
}

增加许可证

 与使用版企业级Ehcache一同下载的还有一个有效期为30天的授权Key。使用这个key来激活off-heap存储。可增加到路径或通过系统属性存取。

 

分享到:
评论
1 楼 mrjianggd 2015-11-12  
你好,文章开头说的离线堆允许创建非常大缓存,超过350g,那么你们的实际物理内存有多大呢?

相关推荐

    Ehcache 2.10.8 .tar.gz(bigmemory-max-4.3.8.4.2.tar.gz)

    Ehcache 2.10.8是该系统的一个版本,而bigmemory-max-4.3.8.4.2是Tangosol公司的BigMemory Max产品,它扩展了Ehcache的功能,提供了超大规模内存存储解决方案。 Ehcache 2.x系列是其历史上的一个稳定版本,支持多种...

    Ehcache 2.10.8(bigmemory-max-4.3.8.4.2.tar.gz)

    在bigmemory-max-4.3.8.4.2.tar.gz这个压缩包中,我们可以找到与Ehcache 2.10.8相关的所有组件和配置文件。 1. Ehcache的核心功能: - 分布式缓存:Ehcache支持分布式缓存模式,可以在多台服务器之间共享缓存数据...

    spring+ehcache实例demo

    软件仍然是开源,但一些新的主要功能(例如,快速可重启性之间的一致性的)只能在商业产品中使用,例如Enterprise EHCache and BigMemory。,维基媒体Foundationannounced目前使用的就是Ehcache技术。

    ehcache.jar(含源码)

    软件仍然是开源,但一些新的主要功能(例如,快速可重启性之间的一致性的)只能在商业产品中使用,例如Enterprise EHCache and BigMemory。,维基媒体Foundationannounced目前使用的就是Ehcache技术。

    ehcache监控工具ehcache-monitor-kit-1.0.3

    1.解压缩到目录下,复制ehcache-monitor-kit-1.0.0\lib\ehcache-probe-1.0.0.jar包到application的web-inf/lib目录下 2.将以下配置copy的ehcache.xml文件的ehcache标签中,注:上述链接中说的配置少写了个probe包名...

    ehcache.xsd_ehcache.xml代码提示.rar

    【标题解析】:“ehcache.xsd_ehcache.xml代码提示.rar”这个标题表明这是一个与Ehcache缓存系统相关的资源包,主要目的是为Ehcache的配置文件ehcache.xml提供代码提示功能。Ehcache是一个广泛使用的开源Java缓存...

    Ehcache 简单的监控

    Ehcache是一个开源的、高性能的缓存解决方案,广泛应用于Java应用程序中,以提高数据访问的速度和效率。本文将深入探讨Ehcache的简单监控,帮助开发者更好地理解其工作原理和性能状态。 首先,了解Ehcache的核心...

    ehcache-3.3.1-API文档-中文版.zip

    赠送jar包:ehcache-3.3.1.jar; 赠送原API文档:ehcache-3.3.1-javadoc.jar; 赠送源代码:ehcache-3.3.1-sources.jar; 赠送Maven依赖信息文件:ehcache-3.3.1.pom; 包含翻译后的API文档:ehcache-3.3.1-javadoc-...

    ehcache-terracotta代码配置

    Ehcache是一个流行的Java缓存库,用于提高应用程序性能,减少对数据库的访问。当与Terracotta结合使用时,Ehcache可以实现分布式缓存,使得多台服务器上的应用可以共享同一份缓存数据,从而构建高可用的集群环境。在...

    ehcache.jar及源码

    Ehcache是一个广泛使用的开源Java缓存库,它为应用程序提供了高效的内存管理和数据缓存功能。Ehcache的核心目标是提高应用性能,通过将频繁访问的数据存储在内存中,减少对数据库的依赖,从而降低系统负载。这次我们...

    Mybatis-ehcache 1.2.1源码(ehcache-cache-mybatis-ehcache-1.2.1.zip)

    Mybatis-ehcache 1.2.1 是一个集成Mybatis和Ehcache的缓存模块,用于提高Mybatis框架的查询效率。Ehcache是一个广泛使用的Java缓存解决方案,它能够有效地存储和检索数据,减少数据库的负载,提高应用程序性能。在...

    Ehcache分布式缓存与其在SpringBoot应用

    Ehcache是一个高性能的、基于Java的进程内缓存解决方案,它被广泛应用于各种Java应用程序,包括Java EE和轻量级容器。Ehcache的主要优势在于它的快速响应、易用性和丰富的缓存策略。它提供了两种级别的缓存存储:...

    ehcache

    **Ehcache 知识详解** Ehcache 是一个开源的、高性能的缓存解决方案,广泛应用于Java应用程序中,尤其在提升系统性能和减少数据库负载方面表现突出。它支持内存和磁盘存储,并且可以与Java持久层框架如Hibernate、...

    hibernate+ehcache

    【标题】:“Hibernate + Ehcache 整合使用详解” 【描述】:“Hibernate 是一款流行的 Java 持久层框架,而 Ehcache 是一个高效的分布式内存缓存系统。将两者结合,能够极大地提升应用的性能,减少数据库的负载,...

    ehcache-3.9.9-API文档-中英对照版.zip

    赠送jar包:ehcache-3.9.9.jar; 赠送原API文档:ehcache-3.9.9-javadoc.jar; 赠送源代码:ehcache-3.9.9-sources.jar; 赠送Maven依赖信息文件:ehcache-3.9.9.pom; 包含翻译后的API文档:ehcache-3.9.9-javadoc-...

    mybatis ehcache 1.0 ehcache.xsd 提示文件

    本篇文章将详细探讨MyBatis与Ehcache的集成以及`ehcache.xsd`和`ehcache.xml`这两个配置文件在其中的作用。 首先,Ehcache是一个开源的、高性能的Java缓存库,它能够极大地减少对数据库的访问,提高应用程序的响应...

    EHcache相关jar下载及案例

    EHcache是一款广泛使用的开源Java分布式缓存系统,主要设计用于提高应用程序的性能和可伸缩性。在Java应用程序中,特别是那些基于Hibernate或MyBatis的持久层框架中,EHcache作为二级缓存工具,能够显著提升数据访问...

    ehcache2.6.5.rar

    Ehcache是一个开源的Java缓存库,广泛用于提高应用程序的性能和响应速度,通过存储经常访问的数据在内存中,避免了频繁的数据库查询。它最初由Tomi Triebel开发,现在是Terracotta公司的产品。在版本2.6.5中,...

    ehcache资料(包含ehcache jar包)

    **Ehcache** 是一个广泛使用的Java缓存库,它为应用程序提供了本地内存缓存功能,以提高数据访问速度和减少数据库负载。Ehcache在处理高并发和大数据量的场景下表现出色,尤其适用于那些频繁读取但不经常修改的数据...

Global site tag (gtag.js) - Google Analytics