何时使用Java Cache以及它与HashMap的区别?

Kam*_*ash 8 java caching hashmap jcache

我已经javax.cache.Cache了解了它的用法和行为.据说,

JCache是​​一种类似Map的数据结构,可以提供应用程序数据的临时存储.

JCache和HashMap将元素存储在本地堆内存中,默认情况下没有持久性行为.通过实现自定义CacheLoader,CacheWriter我们可以实现持久性.除此之外,何时使用它?

Ger*_*cke 7

缓存通常具有比映射更多的管理逻辑,这些只是一个或多或少简单的数据结构.

一些概念,JCaches可能会实现

  • 到期:条目可能会在一段时间后或自上次使用后过期并从缓存中删除
  • 驱逐:如果空间有限,则会从缓存中删除元素.可以有不同的驱逐策略.LRU,FIFO,......
  • 分布:即在集群中,而映射是JVM的本地
  • 持久性:缓存中的元素可以是持久的并且在重新启动后存在,Map的内容刚刚丢失
  • 更多内存:缓存实现可能使用比JVM Heap提供的内存更多的内存,使用一种名为BigMemory的技术,其中对象被序列化为单独分配的bytebuffer.此JVM外部存储器由OS(分页)而不是JVM管理
  • 通过值或引用存储键和值的选项(在地图中您自己处理)
  • 应用安全性的选项

其中一些是JCache的更一般概念,一些是缓存提供者的具体实现细节


Yas*_*jaj 1

以下是两个对象之间的五个主要区别。

与 java.util.Map 不同,Cache :

  • 不允许空键或空值。尝试使用 null 将导致 java.lang.NullPointerException
  • 当请求的值不在缓存中时,提供从 javax.cache.integration.CacheLoader 读取值(读取缓存)的能力
  • 当从缓存中创建/更新/删除值时,提供将值写入 javax.cache.integration.CacheWriter(直写式缓存)的能力
  • 提供观察缓存条目变化的能力
  • 可以捕获和测量运营统计数据

资料来源:GrepCode.com