我读到了JSR 107缓存(JCache)。
我很困惑: 据我所知,每个CPU都管理他的缓存(没有操作系统的任何帮助)。
那么,为什么我们需要Java缓存处理程序? (如果CPU管理自己的缓存)
我想念的是什么?
由于
答案 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程序可以共享相同的缓存。