作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用由 ChronicleMap 支持的 ChronicleSet。我已经做了一些初步测试,它非常适合我们的需求。 RAM 使用效率比其他解决方案高得多,访问时间稍慢,但仍然很快。
但是,我正在测试的一件事是设置最大条目数,它似乎没有按预期工作。
我正在使用以下代码:
ChronicleSetBuilder<Long> postalSetBuilder =
ChronicleSetBuilder.of(Long.class)
.name("long-map")
.entries(2_000_000L)
.maxBloatFactor(1.0);
根据文档,这意味着在这种情况下允许的最大条目数为 2M。但是,在测试时,我可以可靠地达到指定最大值的 2 倍,甚至更多,直到出现如下异常:
Error: ChronicleMap{name=city-postal-codes-map, file=null, identityHashCode=3213500}: Attempt to allocate #129 extra segment tier, 128 is maximum.
Possible reasons include:
- you have forgotten to configure (or configured wrong) builder.entries() number
- same regarding other sizing Chronicle Hash configurations, most likely maxBloatFactor(), averageKeySize(), or averageValueSize()
- keys, inserted into the ChronicleHash, are distributed suspiciously bad. This might be a DOS attack
在这种情况下,对 size()
的 ChronicleMap 对象调用会输出 4,079,238
。所以我想知道如何设置明确的限制(如上面指定的 2M),并让 Chronicle 可靠地拒绝在此之后添加其他元素的任何请求。
最佳答案
不可能配置确切的特定条目限制,因为无共享分段存储,没有单个条目计数器。要使 Chronicle Map 无法关闭配置的 entries() 限制,您应该配置 allowSegmentTiering(false)
。
关于java - 在 OpenHTF ChronicleMap 上设置最大条目数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45745153/
我正在使用由 ChronicleMap 支持的 ChronicleSet。我已经做了一些初步测试,它非常适合我们的需求。 RAM 使用效率比其他解决方案高得多,访问时间稍慢,但仍然很快。 但是,我正在
我是一名优秀的程序员,十分优秀!