2017-06-06 48 views
0

需要: 需要獲取IMAP佔用的內存。無法獲得Hazelcast中的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(); 

從上面的例子中,我抽到了內存佔用,mapsize值爲0,而考慮到實際的地圖大小和實際內存映射佔領。 當我使用配置來創建hazelcast實例時,我可以獲取地圖大小和地圖空間。但是當我使用ClientConfig時,情景不起作用。 任何人都可以幫助我與ClientConfig合作,通過使用LocalMapStats獲得地圖狀態。 在此先感謝。

回答

1

統計信息是LocalMapStats,因此它們只顯示該實例擁有的條目。沒有全球統計數據。並且由於客戶端沒有自己的條目,因此計數始終爲0.

我們提供這些統計信息的唯一原因是隻能通過LocalMapStats訪問的NearCacheStats。否則,該方法會在客戶端上拋出一個UnsupportedOperationException異常(我認爲它在引入NearCacheStats之前)。

+0

那麼我如何實現我的場景來獲得IMap佔用的堆內存。 –