1

我阅读了有关 JSR 107 缓存(JCache)的信息。

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

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

我在这里想念什么?

谢谢

4

2 回答 2

2

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

缓存通常用于在两次使用之间临时保存数据,因为它需要太多时间,或者如果您只是在两次使用之间将其丢弃,则根本不可能重新创建。

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

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

于 2014-10-10T06:59:46.687 回答
1

CPU缓存和内存缓存是有区别的。此 JCache 会将内容缓存在内存中,因此您不必从磁盘或网络等昂贵的资源中获取它。

因此 CPU 内置了缓存,这样它们就可以避免进入内存。CPU 通常具有三级缓存,存储空间约为 8MB。CPU缓存不是您必须担心的事情,因为它会为您处理好。如果某些东西不在 CPU 缓存中,那么它必须从内存中取出它。

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

于 2014-10-10T07:01:59.890 回答