der*_*itz 3 java memory caching heap-memory guava
我刚刚通过搜索缓存API 找到了Guava(它非常适合我的需求).但是在阅读wiki和Javadoc时出现了一个问题- CacheBuilder可以采用什么设置的默认值?该Javadoc中的国家"这些功能都是可选的"和"创建一个新的CacheBuilder实例使用默认设置,包括强大的键,坚定的价值观,以及任何形式的自动驱逐."
在我看来,一个很好的默认值maximumSize是相对于Runtime.getRuntime().freeMemory();
最后,我想要一个使用给定系统上可用内存的缓存.所以我需要一个驱逐策略,询问有多少freeMemory()可用(可能相对于Runtime.getRuntime().maxMemory())
小智 6
实际上,可用内存并不是缓存驱逐度量的最佳选择.原因是垃圾收集.耗尽空闲内存可能只意味着现在是垃圾收集器运行的时候了,之后你会突然有大量的空闲内存.所以你不想因为你有大量的垃圾而从缓存中删除东西.
一种选择是使用softValues(),但我强烈建议不要这样做,因为软引用确实会损害生产性能.
正确的做法是仔细选择一个maximumSize实际上限制了缓存将消耗的总内存量.如果条目占用可变数量的空间,那么您可以使用它maximumWeight来建模.
| 归档时间: |
|
| 查看次数: |
1131 次 |
| 最近记录: |