我试图计算如果不指定任何最大大小该高速缓存可以容纳的元素数。cacheWithoutSize可以包含多少个条目有上限吗?Cache<String, Object> cacheWithoutSize = CacheBuilder.newBuilder() .build();我通读了发布文档,找不到任何答案:下载代码:http:API公共/缓存/缓存构建器。
cacheWithoutSize
Cache<String, Object> cacheWithoutSize = CacheBuilder.newBuilder() .build();
zzwlnbp81#
扩展路易斯·瓦色尔曼的话...我们假设缓存大小的绝对限制(条目数)是Integer.MAX_VALUE,比20亿多一点,在实际的缓存场景中,很可能在接近理论上的最大缓存大小之前就耗尽了堆内存。例如,如果我们假设Long键Map到String值,每个键使用20字节,不包括开销,每个条目使用24字节,所以最大缓存将包含大约50 GiB的数据,很少有机器可以支持50+ GiB的堆分配,并且记住开销(例如该高速缓存数据结构本身)将使真实的内存使用量更大。
Integer.MAX_VALUE
Long
String
1条答案
按热度按时间zzwlnbp81#
扩展路易斯·瓦色尔曼的话...
我们假设缓存大小的绝对限制(条目数)是
Integer.MAX_VALUE
,比20亿多一点,在实际的缓存场景中,很可能在接近理论上的最大缓存大小之前就耗尽了堆内存。例如,如果我们假设
Long
键Map到String
值,每个键使用20字节,不包括开销,每个条目使用24字节,所以最大缓存将包含大约50 GiB的数据,很少有机器可以支持50+ GiB的堆分配,并且记住开销(例如该高速缓存数据结构本身)将使真实的内存使用量更大。