JSR 107 - 缓存(JCache)与CPU缓存

时间:2014-10-10 06:55:52

标签: java jcache

我读到了JSR 107缓存(JCache)。

我很困惑: 据我所知,每个CPU都管理他的缓存(没有操作系统的任何帮助)。

那么,为什么我们需要Java缓存处理程序? (如果CPU管理自己的缓存)

我想念的是什么?

由于

2 个答案:

答案 0 :(得分:2)

这是关于缓存Java对象,例如创建成本高昂或需要在多个Java VM之间共享的对象。见https://jcp.org/en/jsr/detail?id=107

缓存通常用于在使用之间临时保存数据,因为它需要花费太多时间,或者如果您只是在使用之间将其丢弃,则无法重新创建。

CPU缓存保存数据和指令,以防它再次访问它,因为从内存中读取数据和指令需要更多时间。

JSR 107缓存的工作方式完全不同。

答案 1 :(得分:1)

CPU缓存和内存缓存之间存在差异。这个JCache会将内容缓存在内存中,因此您不必从像磁盘或网络这样昂贵的资源中获取它。

因此CPU内置了缓存,以便它们可以避免进入内存。 CPU通常具有三级缓存并存储大约8MB。 CPU缓存不是你必须担心的事情,因为它会为你照顾。如果某些东西不在CPU缓存中,那么它必须从内存中取出它。

内存缓存是为了避免像我前面提到的那样进入磁盘甚至更慢的资源。这种机制程序可以控制。因此,如果您想避免不断向DB询问某个对象,您可以将其存储在内存中并继续返回相同的对象。这样可以节省很多性能。正如Thomas所说,JCache添加了能够跨JVM提供缓存的功能。据我所知,这意味着不同的Java程序可以共享相同的缓存。