Guava 缓存可以使用的最大首选大小是多少?我的系统具有8 gb RAM,因此在不降低系统和其他应用程序性能的情况下可以使用多少MB?当RAM存储不可用时,Guava缓存还会使用硬盘存储吗?

最佳答案

您只能限制缓存中的条目数。在Guava中,无法指定以兆字节为单位的大小限制。 EHCache支持指定大小限制(以兆字节为单位),但是,确定高速缓存条目的大小是一项艰巨的任务,涉及一些魔术,猜测和性能开销。



不,它只是Java堆。有关详细信息,请参见CachesExplained · google/guava Wiki

在实践中,您从一个合理的但较小的缓存大小开始,然后增加它,同时注意并注意堆内存消耗。

实际上是“如何调整缓存大小”问题。这不容易回答,通常会有经验和直觉相结合。为了稍微扩大答案并为您提供更多指导:

先决条件

  • 确保您了解Java堆和垃圾回收的一般概念
  • 知道/检查JVM的最大堆大小设置。请参阅:How is the default java heap size determined?
  • 了解如何监视和解释堆消耗和GC Activity ,例如使用VisualVM,请参见:http://visualvm.java.net/monitor_tab.html
  • 知道如何从缓存中检索和解释统计信息,尤其是命中率
  • 知道您的数据,一个条目的估计大小(以字节为单位)以及 Activity 数据集的大小计数

  • 经验法则
  • 争取达到90%以上的点击率。如果较小,请增加缓存大小,或者了解为什么缓存效果不佳。可能的原因:由于过期时间短,大量顺序扫描,导致缓存未命中。有时,您可以改进应用程序或使用其他参数(然后使用缓存大小)来优化您的命中率。
  • 对于第一个“最佳选择”,请配置您的缓存大小(以条目数计)至少为 Activity 数据集大小的10%
  • 关于java - Guava 缓存可以使用的最大首选大小是多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34478380/

    10-12 04:14