我想得到地图驱逐max-size =" 4" PER_NODE致力于Hazelcast 3.6.2弹簧。这是我在春天定义的地图。
<hz:map name="sfdRequestMap" in-memory-format="OBJECT" eviction-policy="LRU" max-size="4" max-size-policy="PER_NODE" eviction-percentage="25">
</hz:map>
我还检查了这个驱逐政策是否实际上是为所定义的地图设定的,而且确实如此。也可以在几秒钟之后逐出该地图,但是在覆盖最大尺寸时的驱逐并非如此。我使用的是hazelcast 3.6.2。我还试图删除内存格式,更改驱逐政策等等。
预期的行为是,当地图超过项目数量(超过4)时,驱逐就会开始。实际行为是驱逐永远不会开始。
欢迎任何帮助。
答案 0 :(得分:4)
Hazelcast Map内部以分区为基础进行驱逐,这意味着当您使用maxSize为5000的PER_NODE
策略时,使用此等式将该maxSize转换为partition-max-size
partition-max-size = maxSize * memberCount / partitionCount
。当该分区中的入口计数超过partition-max-size
时,将从该分区开始逐出。 partition-max-size
的最小值在内部设置为1
,不会逐出每个添加的条目。所以partitionCount
是最小可设置的max-size(默认分区计数是271)。