【发布时间】:2020-11-11 00:49:04
【问题描述】:
据此answer ChronicleMap 的 entrySet().iterator() 将转储内存中的所有对象。
我不想加载内存中的所有对象并过滤内存中的整个地图 - 这违背了 Chroniclemap 的目的。
那么现在,给定一个编年史地图类型
- 获取范围 >= 500 的键
- 删除键范围
【问题讨论】:
标签: java chronicle chronicle-map
据此answer ChronicleMap 的 entrySet().iterator() 将转储内存中的所有对象。
我不想加载内存中的所有对象并过滤内存中的整个地图 - 这违背了 Chroniclemap 的目的。
那么现在,给定一个编年史地图类型
【问题讨论】:
标签: java chronicle chronicle-map
您可以使用 ThreadLocal 来缓存此值或根据需要创建。
// cache as desired
LongValue key = Values.newHeapInstance(LongValue.class);
在不产生垃圾的情况下获取许多值
// cached value for a Pojo
Pojo pojo = acquirePojo();
for (int i = 500; i < max; i++) {
key.setValue(i);
Pojo p2 = map.getUsing(key, pojo);
}
这将产生很少或没有垃圾来删除条目
for (int i = 0; i < 500 ; i++) {
key.setValue(i);
// assume map was built with removeReturnsNull(true)
map.remove(key);
}
【讨论】: