- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试以这种方式使用 LRU 逐出策略为一组字符串创建缓存。
private static final Boolean PLACEHOLDER = true;
LoadingCache<String, Boolean> scannedIDsCache = CacheBuilder.newBuilder()
.build(new CacheLoader<String, Boolean>() {
@Override
public Boolean load(String key) throws Exception {
return PLACEHOLDER;
}
});
我认为我只使用一个对象作为所有元素的值来节省空间,对吗?您知道其他节省空间的方法吗?谢谢。
最佳答案
不,你没有节省空间。
当 JVM* autoboxes一个boolean
它调用 Boolean.valueOf(boolean)
返回 Boolean.TRUE
或 Boolean.FALSE
这是static final Boolean
领域。它不会创建新的 Boolean
实例。因此,PLACEHOLDER
您定义的实际上是对 Boolean.TRUE
的引用并且是多余的。
此外,我不会使用 Guava 的 Cache
对于 LRU,除非我愿意接受这样一个事实,即“缓存可能会驱逐一个条目,因为它最近没有被使用过或经常”(CacheBuilder.maximumSize(long),强调> 已添加)。
如果你想要一个直接的 LRU,你可以使用 Collections.newSetFromMap(Map)
与 LinkedHashMap
:
Set<String> cache = Collections.newSetFromMap(new LinkedHashMap<String, Boolean>() {
@Override
protected boolean removeEldestEntry(Map.Entry<String, Boolean> eldest) {
return size() > MAX_ENTRIES;
}
});
在哪里定义 MAX_ENTRIES
.
*注意:理论上可能有一些 JVM 实现不调用 Boolean.valueOf(boolean)
(或类似的东西)在运行时自动装箱 boolean
原语,但如果存在这样的实现,我相信你不会使用它,而且很少有人使用它。来自 Boolean(boolean)
:
Note: It is rarely appropriate to use this constructor. Unless a new instance is required, the static factory
valueOf(boolean)
is generally a better choice. It is likely to yield significantly better space and time performance.
关于java - 在 Java 中使用 LRU 逐出策略缓存一组字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42635283/
我们配置了为 1200(20 分钟),但缓存在缓存创建时间一分钟后自动被逐出。 有人可以告诉我如何使缓存在指定的时间段内有效吗? 最佳答案 下面 hazelcast.xml 中的代码片段将“simpl
dot net 的 MemoryCache 驱逐发生在什么时候?如何在控制台应用程序中模拟驱逐?每当我尝试将对象添加到内存缓存直到发生逐出时,我都会得到 OutofMemoryException。 最
这是我的守护进程 apiVersion: apps/v1 kind: DaemonSet metadata: name: nginx spec: selector: matchLabe
我收到以下异常: java.lang.IllegalStateException: Session/EntityManager is closed at org.hibernate.inter
我正在使用 Google Guava CacheBuilder创建一个 Cache实例。我的代码如下所示: return CacheBuilder.newBuilder() .
我是一名优秀的程序员,十分优秀!