番石榴缓存可以使用的最大优选大小是多少?

时间:2015-12-27 07:12:20

标签: java caching guava google-guava-cache

番石榴缓存可以使用的最大优选大小是什么?我的系统有8 GB RAM,因此不会降低系统和其他应用程序的性能我可以使用多少MB?当RAM存储不可用时,Guava缓存是否也使用硬盘存储?

1 个答案:

答案 0 :(得分:4)

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

  

当RAM存储不可用时,Guava缓存是否也使用硬盘存储?

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

在实践中,您从合理但低缓存大小开始,并增加它,同时保持并关注堆内存消耗。

实际上问题是"如何调整缓存大小?"不容易回答,通常有经验加上涉及的直觉。为了扩大答案并给你更多指示:

<强>先决条件

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

经验法则

  • 目标命中率达到90%以上。如果它更小,增加缓存大小,或者,知道缓存不是很有效的原因。可能的原因:缓存未命中,因为到期时间短,顺序扫描很多。有时您可以改进应用程序或调整其他参数,然后调整缓存大小以优化命中率。
  • 第一个&#34;最好的赌注&#34;配置缓存大小(在条目计数中)至少为活动数据集大小的10%