我已经javax.cache.Cache
了解了它的用法和行为。据称,
JCache 是一种类似 Map 的数据结构,提供应用程序数据的临时存储。
JCache 和 HashMap 将元素存储在本地 Heap 内存中,默认情况下没有持久化行为。通过实现自定义CacheLoader
,CacheWriter
我们可以实现持久化。除此之外,什么时候使用它?
缓存通常比地图有更多的管理逻辑,地图只是一个或多或少简单的数据结构。
一些概念,JCaches 可能实现
其中一些是更通用的JCache概念,一些是缓存提供者的具体实现细节
这是两个对象之间的五个主要区别。
与 java.util.Map 不同,缓存:
- 不允许空键或值。尝试使用 null 将导致 java.lang.NullPointerException
- 当请求的值不在缓存中时,提供从 javax.cache.integration.CacheLoader 读取值的能力(通过缓存读取)
- 当从缓存中创建/更新/删除值时,提供将值写入 javax.cache.integration.CacheWriter(通过缓存写入)的能力
- 提供观察缓存条目变化的能力
- 可以捕获和测量运营统计数据
大多数情况下,缓存实现使这些缓存对象远离堆(在 GC 范围之外)。GC 跟踪在 java 中分配的每个对象。想象一下,您在内存中有数百万个对象。如果这些对象不是堆外对象,相信我,GC 将使您的应用程序性能变得糟糕。