所需物品: 需要获取IMAP占用的内存。
问题: 我使用ClientConfig连接HazelcastInstance并检索IMAP(示例)。 我创建了LocalmapStats对象以获取地图统计信息。 我得到的值为零而不是实际的内存大小。
示例代码:
ClientConfig clientConfig = new ClientConfig();
clientConfig.addAddress("localhost");
clientConfig.getGroupConfig().setName("dev").setPassword(""dev-pass);
HazelcastInstance hz = HazelcastClient.newHazelcastClient(clientConfig);
IMap<String,String> map1 = hz.getMap("sample");
map1.put("key1","Value1");
map1.put("key2","Value2");
LocalMapStats mapstats = map1.getLocalMapStats();
int records = mapstats.getOwnedEntryCount();
long memoryOccupied = mapstats.getOwnedEntryMemoryCost();
从上面的例子中我可以获得占用的内存并将值映射为0而不是给定实际的地图大小和地图占用的实际内存。 当我使用配置创建hazelcast实例时,我可以获取地图大小和地图空间。但是当我使用 ClientConfig 时,该方案无效。 任何人都可以帮助我使用 ClientConfig 来使用 LocalMapStats 来获取地图状态。 提前谢谢。
答案 0 :(得分:2)
统计信息是LocalMapStats,因此它们只显示该实例拥有的条目。没有全球统计数据。由于客户端不拥有条目,因此计数始终为0.
我们提供这些统计数据的唯一原因是NearCacheStats只能通过LocalMapStats访问。否则该方法会在客户端上抛出UnsupportedOperationException(我认为它是在引入NearCacheStats之前做的)。
答案 1 :(得分:1)
目前没有客户支持IMap统计数据,它实际上返回了你已经注意到的空数据。您可以在项目页面https://github.com/hazelcast/hazelcast/issues
上打开GitHub问题